java读取pfx或P12格式的个人交换库公私钥
2024-09-01 10:42:55
使用的是CFCA签发的用于银行间交换数据的证书,下载后直接添加到浏览器中
1、导出
从浏览器导出p12文件(包含私钥)
2、验证
两种方式:
openssl
代码(请注意alias别名是如何获取的):
package com.shengpay.mas.demo.cert; import org.apache.commons.codec.binary.Base64; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.*;
import java.security.cert.*;
import java.security.cert.Certificate;
import java.util.Enumeration; /**
* Description: 读取P12格式的个人交换库
* <p>
* User: lishaohua
* Date: 2017/12/27 12:51
*/
public class P12Demo { public static void main(String[] args) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {
String keyStorePath = "D:/123456.pfx";
String password = "123456"; // 实例化密钥库,默认JKS类型
KeyStore ks = KeyStore.getInstance("PKCS12");
// 获得密钥库文件流
FileInputStream is = new FileInputStream(keyStorePath);
// 加载密钥库
ks.load(is, password.toCharArray());
// 关闭密钥库文件流
is.close(); //私钥
Enumeration aliases = ks.aliases();
String keyAlias = null;
if (aliases.hasMoreElements()){
keyAlias = (String)aliases.nextElement();
System.out.println("p12's alias----->"+keyAlias);
}
PrivateKey privateKey = (PrivateKey) ks.getKey(keyAlias, password.toCharArray());
String privateKeyStr = Base64.encodeBase64String(privateKey.getEncoded());
System.out.println("私钥------------->" + privateKeyStr); //公钥
Certificate certificate = ks.getCertificate(keyAlias);
String publicKeyStr = Base64.encodeBase64String(certificate.getPublicKey().getEncoded());
System.out.println("公钥------------->"+publicKeyStr);
}
}
3、使用
发布公钥或者双向认证等。
具体代码略...
最新文章
- ajax的表单提交,与传送数据
- linux 定时清理session
- 两种状态显示处理. enum , Linq AsEnumerable
- (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 决策树分析算法)
- [Tool] 透过PowerPoint Online在部落格文章里内嵌简报
- javaScript事件(三)事件对象
- 从零开始学android开发-获取控件
- mapreduce 实现矩阵乘法
- WinPcap编程(一)
- hyper-V 装ubuntu15.04
- WPF自定义Window样式(1)
- TensorFlow模型保存和加载方法
- gitlab的安装和基本维护
- pandas的set_index和reset_index方法
- GridView中如何实现自定义时间货币等字符串格式?
- springboot+mybatis+mysql创建简单web后台项目
- maven 工程mybatis自动生成实体类
- MacBook下java环境的搭建
- 解决:Invalid character found in the request target.The valid characters are defined in RFC 7230 and RFC3986
- SSL与TLS有什么区别
热门文章
- UGUI 用手柄或者键盘控制选择Scroll View中的游戏对象时,滚动条跟着移动
- LeetCode 860.柠檬水找零(C++)
- DEDE模板中如何运行php脚本和php变量的使用
- Quartz使用(1) - 初识quartz
- python3.4中自定义wsgi函数,make_server函数报错问题
- struts2的常量
- .Net程序员学习Linux最简单的方法(转载)
- [vijos]lxhgww的奇思妙想(长链剖分)
- Android getRunningTasks和getRunningAppProcesses失效
- 轻松解决 Eclipse Indigo 3.7 中文字体偏小,完美 Consolas 微软雅黑混合字体!(转)