在做项目中,碰到是给到定的私钥和公钥,我们得把公钥和私钥读出来才可以使用,私钥一般还会有密码!
/**
* 获取公钥
*/
public PublicKey readPublicKey(String cerFileName) {
CertificateFactory cf;
FileInputStream in;
Certificate c;
PublicKey pk = null;
try {
cf = CertificateFactory.getInstance("X.509");
in = new FileInputStream(cerFileName);
c = cf.generateCertificate(in);
pk = c.getPublicKey();
} catch (CertificateException e) {
log.error("获取公钥错误!!!");
log.error(e.getMessage());
e.printStackTrace();
} catch (FileNotFoundException e) {
log.error("获取公钥错误!!!");
log.error(e.getMessage());
e.printStackTrace();
}
return pk;
}
/**
* 获取私钥
*
* @return
*/
public PrivateKey readPrivateKey(String privateKeyFileName,
String privatepass) {
KeyStore ks;
PrivateKey prk = null;
try {
ks = KeyStore.getInstance("pkcs12");
FileInputStream fis = new FileInputStream(privateKeyFileName);
ks.load(fis, null);
String pwd = privatepass;
String alias = ks.aliases().nextElement().toString();
prk = (PrivateKey) ks.getKey(alias, pwd.toCharArray());
} catch (Exception e) {
log.error("获取私钥错误!!!");
log.error(e.getMessage());
e.printStackTrace();
}
return prk;
}