使用的是CFCA签发的用于银行间交换数据的证书,下载后直接添加到浏览器中

1、导出

从浏览器导出p12文件(包含私钥)

2、验证

两种方式:

openssl

代码(请注意alias别名是如何获取的):

  1. package com.shengpay.mas.demo.cert;
  2.  
  3. import org.apache.commons.codec.binary.Base64;
  4.  
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.IOException;
  8. import java.security.*;
  9. import java.security.cert.*;
  10. import java.security.cert.Certificate;
  11. import java.util.Enumeration;
  12.  
  13. /**
  14. * Description: 读取P12格式的个人交换库
  15. * <p>
  16. * User: lishaohua
  17. * Date: 2017/12/27 12:51
  18. */
  19. public class P12Demo {
  20.  
  21. public static void main(String[] args) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {
  22. String keyStorePath = "D:/123456.pfx";
  23. String password = "123456";
  24.  
  25. // 实例化密钥库,默认JKS类型
  26. KeyStore ks = KeyStore.getInstance("PKCS12");
  27. // 获得密钥库文件流
  28. FileInputStream is = new FileInputStream(keyStorePath);
  29. // 加载密钥库
  30. ks.load(is, password.toCharArray());
  31. // 关闭密钥库文件流
  32. is.close();
  33.  
  34. //私钥
  35. Enumeration aliases = ks.aliases();
  36. String keyAlias = null;
  37. if (aliases.hasMoreElements()){
  38. keyAlias = (String)aliases.nextElement();
  39. System.out.println("p12's alias----->"+keyAlias);
  40. }
  41. PrivateKey privateKey = (PrivateKey) ks.getKey(keyAlias, password.toCharArray());
  42. String privateKeyStr = Base64.encodeBase64String(privateKey.getEncoded());
  43. System.out.println("私钥------------->" + privateKeyStr);
  44.  
  45. //公钥
  46. Certificate certificate = ks.getCertificate(keyAlias);
  47. String publicKeyStr = Base64.encodeBase64String(certificate.getPublicKey().getEncoded());
  48. System.out.println("公钥------------->"+publicKeyStr);
  49. }
  50. }

  

3、使用

发布公钥或者双向认证等。

具体代码略...

java读取pfx或P12格式的个人交换库公私钥的更多相关文章

  1. Java 读取Word文本/段落格式属性

    本文介绍通过Java后端程序代码来读取Word文本和段落格式的方法. 本次测试环境如下: Word版本:2013 编译环境:IntelliJ IDEA2018 Work库:free spire.doc ...

  2. 原生java读取存储为xml格式的数据,并存储到java bean里

    一.举例读取的文件为:X-bond可交易债券信息_20180917.xml <?xml version="1.0" encoding="UTF-8"?&g ...

  3. EasyUI+JSP之java读取数据库后JSON格式数据的返回及调用

    做作业工程中遇到一些问题,特此记录一下 解决的问题:使用EasyUI框架搭建简单学生管理系统(数据库增删改查)操作时配合JSP,不知道如何把从数据库获得的数据封装成JSON格式并传回前端JSP并进行展 ...

  4. python文件读取,替换(带格式,python lib 库)

    import os, time import sys import re def read_old_part(filename, start, end): content = [] recording ...

  5. 读取P12格式证书的密钥

    不想存储p12证书内容,只想存储证书密钥,可通过以下实现读取证书的密钥出来: package com.zat.ucop.service.util; import org.apache.commons. ...

  6. Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法

    測试样例: Java读取UTF-8的txt文件第一行出现乱码"?"及解决 test.txt文件内容: 1 00:00:06,000 --> 00:00:06,010 < ...

  7. java读取excel或者csv时日期格式数据处理

    背景:最近写一个通过excel批量导入数据的功能,里面含有时间,但是java读取之后把时间转为了距离1990年1月1号的天数,比如excel中时间为2018/9/16 18:30,java读取之后变成 ...

  8. Java读取Level-1行情dbf文件极致优化(2)

    最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1 ...

  9. java读取properties配置文件信息

    一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...

随机推荐

  1. Trees on the level UVA - 122 (二叉树的层次遍历)

    题目链接:https://vjudge.net/problem/UVA-122 题目大意:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个结点的值.每个结点都按照从根节点到它的移动序列给出 ...

  2. Perf -- Linux下的系统性能调优工具,第 2 部分 特殊用法以及内核调优示例

    https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/ 本文内容简介 之前介绍了 perf 最常见的一些用法,关注于 Linux 系统上应用程序 ...

  3. 用javascript实现禁止页面后退返回上一页的代码

    用javascript实现禁止页面后退返回上一页的代码:  有时候我们需要用户在点击了如下一步的按钮时,页面跳转到了下一个页面,这时想不允许用户返回后退到上一页,可以采用下面的方法:  在需要跳转的页 ...

  4. Python札记1--基础

    Python语言虽然简单,但相关的细节仍需要注意,本系列札记,旨在记录学习python过程中需要注意的相关知识点或相关难点的理解. 1. 列表 a. python的列表list中元素的类型可以不同 b ...

  5. CentOS7中添加新硬盘

      cp /etc/fstab /etc/fstab.bak echo /dev/vdb1 /mnt/disk1 ext4 defaults 0 0 >> /etc/fstab mkdir ...

  6. MVC中的验证码

    下面是一个完整的mvc controller类 public class CodeController : Controller { private const string CODE = " ...

  7. 浅谈windows.onload()与$(document).ready()

    浏览器加载完DOM后,会通过javascript为DOM元素添加事件,在javascript中,通常使用window.onload()方法. 在jquery中,则使用$(document).ready ...

  8. Stimulsoft Reports送2年免费升级与技术支持

    慧都十年大促,与著名报表控件商Stimulsoft联合推出独家活动,即日起12月31日前,购买指定授权的Stimulsoft Reports除了获得本身1年的免费升级外,还加送2年免费升级与技术支持, ...

  9. StackTrack for debug

    System.Diagnostics.Debug.WriteLine("Serial port. {0},{1}", this.GetType().FullName, new Sy ...

  10. 【起航计划 021】2015 起航计划 Android APIDemo的魔鬼步伐 20 App->Intents createChooser

    Intents 这个例子的代码非常简单: public void onGetMusic(View view) { Intent intent = new Intent(Intent.ACTION_GE ...