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 ...
随机推荐
- LeetCode 032 Longest Valid Parentheses
题目描述:Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the l ...
- Java面试专题-基础篇(1)
- Alpha冲刺——总结
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...
- 探究 | 如何捕获一个Activity页面上所有的点击行为
前言 最近逛wanAndroid论坛,发现一个有趣的问题:如何捕获一个Activity页面上所有的点击行为. 一起研究下吧,不想看源码的小伙伴可以直接看文末总结- 准备工作 先得罗列出页面上的一些点击 ...
- 爬虫模块-requests
title: python爬虫01 date: 2020-03-08 22:56:12 tags: 1.requests模块 requests模块的底层是urllib,但是比urllib更强大也更加简 ...
- 从Excel获取整列内容进行批量扫描
实习工作原因,需要测试excel表里面ip地址是否存在漏洞,扫了一眼,呕,四五百个IP,光是挨个进行访问,都是一个浩大的工程,所以准备开始摸鱼认真工作 思路是:excel按列提取->将IP按行存 ...
- 测试点常用用例设计(登录、修改密码、输入框、上传视频、XSS、URL篡改)
1.无效-视频文件测试点: 视频大小过大 视频大小过小 视频名称过长 视频名称包含特殊字符 视频名称包含中文.中英混合 视频文件格式错误 视频文件重复性上传 2.有效-视频文件测试点: 选择符合要求的 ...
- Elements-of-Python_03_LanguageFeature
(内容包括Python语法概述,流程控制,条件表达式) 1 Python语法 1.1 Python的特点 Python是一种完全面向对象的.解释性的.可移植的.开源的脚本编程高级语言,具有丰富的库,允 ...
- java中的反射(三)
目录 一.反射 1.class类 2.访问字段 3.调用方法 4.调用构造方法 5.获取继承对象 6.动态代理 二.sping中的反射 本篇转自:https://depp.wang/2020/05/0 ...
- Day1-7【Scrum 冲刺博客集合】
Day1-Day7博客链接 Day1[Scrum 冲刺博客] Day2[Scrum 冲刺博客] Day3[Scrum 冲刺博客] Day4[Scrum 冲刺博客] Day5[Scrum 冲刺博客] D ...