package com.ruoyi.costcenter.util;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.util.Base64;
import java.util.Enumeration;
public class ReadPFX {
private static PrivateKey getPvkformPfx(String strPfx, String strPassword){
try {
FileInputStream fis = new FileInputStream(strPfx);
//密码处理
char[] nPassword = null;
if ((strPassword == null) || strPassword.trim().equals("")){
nPassword = null;
} else {
nPassword = strPassword.toCharArray();
}
//加载读取PFX文件
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(fis, nPassword);
fis.close();
Enumeration enumas = ks.aliases();
//从文件中获取秘钥
String keyPFXFile = null;
if (enumas.hasMoreElements()) {
keyPFXFile = (String)enumas.nextElement();
}
PrivateKey prikey = (PrivateKey) ks.getKey(keyPFXFile, nPassword);
Certificate cert = ks.getCertificate(keyPFXFile);
PublicKey pubkey = cert.getPublicKey();
System.out.println("cert class = " + cert.getClass().getName());
System.out.println("cert = " + cert);
System.out.println("public key = " + pubkey);
System.out.println("public encode = " + Base64.getEncoder().encodeToString(pubkey.getEncoded()));
System.out.println("private key = " + prikey);
System.out.println("private encode = " + Base64.getEncoder().encodeToString(prikey.getEncoded()));
return prikey;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String args[]){
String keyStorefile = "F:\\证书\\certificate.pfx";
//生成证书时设置的证书密钥
String keyPassword = "xxxxxx";
getPvkformPfx(keyStorefile,keyPassword);
}
}