直接通过流去获取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文件里面的更多相关文章

  1. 通过OpenSSL解码X509证书文件

    在Windows平台下.假设要解析一个X509证书文件,最直接的办法是使用微软的CryptoAPI. 可是在非Windows平台下,就仅仅能使用强大的开源跨平台库OpenSSL了.一个X509证书通过 ...

  2. 【WCF安全】使用X509证书自定义验证

    接触WCF时间比较短,在项目中要使用X509证书,纠结好几天终于有了结论,因此为了方便日后查阅和园友交流特意单独将部分代码提出,并做以记录. 1.准备工作 制作X509证书,此处用到三个证书名称 导入 ...

  3. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  4. MQTT研究之EMQ:【JAVA代码构建X509证书【续集】】

    openssl创建私钥,获取公钥,创建证书都是比较简单的,就几个指令,很快就可以搞定,之所以说简单,是因为证书里面的基本参数配置不需要我们组装,只需要将命令行里面需要的几个参数配置进去即可.但是呢,用 ...

  5. MQTT研究之EMQ:【JAVA代码构建X509证书】

    这篇帖子,不会过多解释X509证书的基础理论知识,也不会介绍太多SSL/TLS的基本信息,重点介绍如何用java实现SSL协议需要的X509规范的证书. 之前的博文,介绍过用openssl创建证书,并 ...

  6. Java 获取PDF数字签名证书信息

    PDF文档中可添加数字签名,在添加签名前,需要准备可信任签名证书.对文档中已有的签名,可验证书签是否有效.也可通过一定方法来获取数字签名或者签名证书信息.下面以Java代码示例展示如何读取签名的证书信 ...

  7. x509证书相关内容

    什么是证书 X.509证书,其核心是根据RFC 5280编码或数字签名的数字文档.    实际上,术语X.509证书通常指的是IETF的PKIX证书和X.509 v3证书标准的CRL 文件,即如RFC ...

  8. JAVA对数字证书的常用操作(转载)

    一:需要包含的包 import java.security. * ; import java.io. * ; import java.util. * ; import java.security. * ...

  9. android获取https证书

    最近碰到一个问题, 有朋友问android这边能不能拿到服务器下发的证书,意思就是   自签名证书的https接口,在请求的时候,也没有添加自签名证书进信任列表,直接去发https请求,按照正常htt ...

随机推荐

  1. Java 在Excel中添加分离型饼图、环形图

    一.概述 Excel中可支持多种不同类型的图表,本文介绍如何绘制分离型饼图和环形图.其中,分离型饼图的绘制可分为整体分离型(即设置饼图分离程度)和局部分离(即设置点爆炸型值)两种情况.下面将以Java ...

  2. Centos7配置阿里epel源|yum源

    这一步非常重要.重要.重要.在这解释一下源的概念,打个比方如果手机想获取一个软件,可以选择很多途径,如华为的华为商店,小米的应用商店,苹果的App store,源就相当于各种手机获取软件的商店.因为国 ...

  3. argis android sdk配置备忘一下

    ArcGIS RuntimeAndroid SDK100.1.0 1.在线配置(只有两处) 在project工程中的gradle添加 maven { url 'https://esri.bintray ...

  4. 第8.19节 使用__doc__访问Python文档字符串(DocStrings )

    __doc__特殊变量用于查看类.函数.模块的帮助信息,这些帮助信息存放在文档字符串中. 一. 关于文档字符串 关于文档字符串前面很多章节提到过,DocStrings 文档字符串用于程序的文档说明,并 ...

  5. PyQt(Python+Qt)学习随笔:Qt Designer中部件的样式表styleSheet属性

    styleSheet属性是定义部件外观的属性样式表,在Qt中styleSheet样式表是类似于html的css样式一样的方法,只是时专门为Qt中的部件开发的.styleSheet的定义语法也是类似CS ...

  6. Jmeter添加事务

    事务 通过第三方工具或jmeter代理录制的脚本,你会发现会录制很多的子请求.比如当打开首页后, 会继续打开图片,css,其他请求等资源文件. 通常我们会剔除掉这些子请求, 但如果我需要衡量打开一个页 ...

  7. 74CMS3.0储存型XSS漏洞代码审计

    发现一个总结了乌云以前代码审计案例的宝藏网站:https://php.mengsec.com/ 希望自己能成为那个认真复现和学习前辈们思路的那个人,然后准备慢慢开始审计一些新的小型cms了 骑士cms ...

  8. node.js、yarn、npm到底是什么?

    最近在部署环境,在没有开发脚本的情况下,自己根据以往其他项目中的脚本去生搬硬套,发现很难对项目的配置成功.对配置不成功的情况进行判断,发现是对脚本不熟悉,不了解其原理,实现方式也不知道,所以抽时间去了 ...

  9. CentOS 用户请关注,你期待的 CentOS Linux 9 再也不会来了

    2020年12月晚上红帽官网发布了一条公告,宣布了几件事情: 将不会发行 CentOS Linux 9 CentOS Linux 8 的更新支持持续到2021年12月31日 CentOS Linux ...

  10. nginx配置访问本地资源

    参考博客:https://www.cnblogs.com/xy51/p/9973326.html 需要访问路径:http://IP:10013/p1upgrade/picfiles/image73b4 ...