Java获取X509证书里的指纹(SHA-1)从pxf文件里面
直接通过流去获取pxf后缀文件的内容,指纹通过X509才能获取。
String keyStorefile = "pfx文件地址";
String strPassword = "密码";
如果只需要获得pxf的公钥或者私钥
1 try {
2 FileInputStream fis = new FileInputStream("pxf文件地址");
3 //密码处理 strPassword=密码
4 char[] nPassword = null;
5 if ((strPassword == null) || strPassword.trim().equals("")){
6 nPassword = null;
7 } else {
8 nPassword = strPassword.toCharArray();
9 }
10 //加载读取PFX文件
11 KeyStore ks = KeyStore.getInstance("PKCS12");
12 ks.load(fis, nPassword);
13 fis.close();
14 Enumeration enumas = ks.aliases();
15 //从文件中获取秘钥
16 String keyPFXFile = null;
17 if (enumas.hasMoreElements()) {
18 keyPFXFile = (String)enumas.nextElement();
19 System.out.println("keyPFXFile////:"+keyPFXFile);
20 }
21 PrivateKey prikey = (PrivateKey) ks.getKey(keyPFXFile, nPassword);
22 Certificate cert = ks.getCertificate(keyPFXFile);
23 PublicKey pubkey = cert.getPublicKey();
24 System.out.println("cert class = " + cert.getClass().getName());
25 System.out.println("cert = " + cert);
26 System.out.println("public key = " + pubkey);
27 System.out.println("private key = " + prikey);
28 BASE64Encoder bse = new BASE64Encoder();
29 System.out.println("private encode = " + bse.encode(prikey.getEncoded()));
30 return prikey;
31 } catch (Exception e) {
32 e.printStackTrace();
33 }
34 return null;
如果要获得指纹
1 public static void main(String args[]){
2 String keyStorefile = "pfx地址";
3 String keyPassword = "密码";
4 //getPvkformPfx(keyStorefile,keyPassword);
5 try {
6 FileInputStream fis = new FileInputStream(keyStorefile);
7 //密码处理
8 char[] nPassword = null;
9 if ((keyPassword == null) || keyPassword.trim().equals("")){
10 nPassword = null;
11 } else {
12 nPassword = keyPassword.toCharArray();
13 }
14 //加载读取PFX文件
15 KeyStore ks = KeyStore.getInstance("PKCS12");
16 ks.load(fis, nPassword);
17 fis.close();
18 //从文件中获取秘钥
19 String keyPFXFile = null;
20 Enumeration enumas = ks.aliases();
21 if (enumas.hasMoreElements()) {
22 keyPFXFile = (String)enumas.nextElement();
23 }
24 X509Certificate x509Certificate = (X509Certificate)ks.getCertificate(keyPFXFile);
25
26 Principal principal = x509Certificate.getSubjectDN();
27 String str = principal.toString();
28 str = str.substring(str.indexOf("\"")+1);
29 str = str.substring(0,str.indexOf("\""));
30 System.out.println("账号:"+str);
31 String thumbprint = getThumbprint(x509Certificate);
32 System.out.println(thumbprint);
33 }catch (Exception e){
34 e.printStackTrace();
35 }
36 }
37 private static String getThumbprint(X509Certificate cert) {
38 try {
39 MessageDigest md = MessageDigest.getInstance("SHA-1");
40 byte[] der = cert.getEncoded();
41 md.update(der);
42 byte[] digest = md.digest();
43 String digestHex = DatatypeConverter.printHexBinary(digest);
44 return digestHex.toLowerCase();
45 }catch (Exception e){
46 e.printStackTrace();
47 }
48 return null;
49 }
FX本身不是证书,而是密钥库。
要获取证书,您必须将pfx加载到密钥库中,然后获取证书,再强转成X509Certificate去获得指纹。
注意:这个获得也不是直接获得,而是通过指纹的算法算出来指纹的参数,一般证书的信息里面会说明指纹的算法,如果没有说明,就是默认SHA-1。
Java获取X509证书里的指纹(SHA-1)从pxf文件里面的更多相关文章
- 通过OpenSSL解码X509证书文件
在Windows平台下.假设要解析一个X509证书文件,最直接的办法是使用微软的CryptoAPI. 可是在非Windows平台下,就仅仅能使用强大的开源跨平台库OpenSSL了.一个X509证书通过 ...
- 【WCF安全】使用X509证书自定义验证
接触WCF时间比较短,在项目中要使用X509证书,纠结好几天终于有了结论,因此为了方便日后查阅和园友交流特意单独将部分代码提出,并做以记录. 1.准备工作 制作X509证书,此处用到三个证书名称 导入 ...
- java获取https网站证书,附带调用https:webservice接口
一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...
- MQTT研究之EMQ:【JAVA代码构建X509证书【续集】】
openssl创建私钥,获取公钥,创建证书都是比较简单的,就几个指令,很快就可以搞定,之所以说简单,是因为证书里面的基本参数配置不需要我们组装,只需要将命令行里面需要的几个参数配置进去即可.但是呢,用 ...
- MQTT研究之EMQ:【JAVA代码构建X509证书】
这篇帖子,不会过多解释X509证书的基础理论知识,也不会介绍太多SSL/TLS的基本信息,重点介绍如何用java实现SSL协议需要的X509规范的证书. 之前的博文,介绍过用openssl创建证书,并 ...
- Java 获取PDF数字签名证书信息
PDF文档中可添加数字签名,在添加签名前,需要准备可信任签名证书.对文档中已有的签名,可验证书签是否有效.也可通过一定方法来获取数字签名或者签名证书信息.下面以Java代码示例展示如何读取签名的证书信 ...
- x509证书相关内容
什么是证书 X.509证书,其核心是根据RFC 5280编码或数字签名的数字文档. 实际上,术语X.509证书通常指的是IETF的PKIX证书和X.509 v3证书标准的CRL 文件,即如RFC ...
- JAVA对数字证书的常用操作(转载)
一:需要包含的包 import java.security. * ; import java.io. * ; import java.util. * ; import java.security. * ...
- android获取https证书
最近碰到一个问题, 有朋友问android这边能不能拿到服务器下发的证书,意思就是 自签名证书的https接口,在请求的时候,也没有添加自签名证书进信任列表,直接去发https请求,按照正常htt ...
随机推荐
- Alpha冲刺-第七次冲刺笔记
Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...
- rest-framework 响应器(渲染器)
一 作用: 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件. 用户请求URL: http://127.0.0.1:8000/test/?format=json http ...
- 数据库:Flask-SQLAlchemy
一.安装以及使用 1.安装 安装 flask-sqlalchemy pip install flask-sqlalchemy 如果连接的是 mysql 数据库,需要安装 mysqldb pip ins ...
- 第4章 基础知识进阶 第4.1节 Python基础概念之迭代、可迭代对象、迭代器
第四章 基础知识进阶第十七节 迭代.可迭代对象.迭代器 一. 引言 本来计划讲完元组和字典后就讲列表解析和字典解析,但要理解列表解析和字典解析,就需要掌握Python的高级的类型迭代器,因此本节 ...
- PyQt学习遇到的问题:重写notify发送的消息为什么首先给了一个QWindow对象?
在PyQt开发图形界面应用时,从QApplication派生的子类重写notify方法后(具体请参考<PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消 ...
- [Windows] Prism 8.0 入门(下):Prism.Wpf 和 Prism.Unity
1. Prism.Wpf 和 Prism.Unity 这篇是 Prism 8.0 入门的第二篇文章,上一篇介绍了 Prism.Core,这篇文章主要介绍 Prism.Wpf 和 Prism.Unity ...
- CommandLineRunner 可能会导致你的应用宕机停止,我劝你耗子尾汁
hello,大家好,我是小黑,又和大家见面啦~~ 如果你去某度搜索关键词 CommandLineRunner 初始化资源 ,截止小黑同学写这篇推文之前,大概能收到 1,030,000 个结果. 网上大 ...
- XDown单文件版 下载工具 支持磁力等多种链接方式下载
原来的程序不带剪辑板探测,不支持迅雷链接等 增加功能后优化制作单文件版本. 下载类型为下图 magnet:?xt=urn:btih:836A228D932EF1C7EA1DD99D5D80B7CB0C ...
- 判断wangeidtor中输入框内容为空
在我做的项目中,产品没有要求图片多媒体等,暂时只需要标题正文表格之类的,在保存的时候校验内容不为空 刚开始考虑的是editor.txt.html()获取到html片段在判断标签中的值,但是太过繁琐 后 ...
- caffe源码 理解链式法则
网络结构 首先我们抽象理解下一个网络结构是怎样的,如下图所示 F1,F2,F3为某种函数 input为输入数据,output为输出数据 X1,X2为为中间的层的输入输出数据 总体来说有以下关系 X1 ...