【发布时间】:2013-04-27 18:17:59
【问题描述】:
我从密钥库浏览器读取证书,获取私钥有一些问题,但公钥变得完美。下面是代码:
KeyStore keystore1 = KeyStore.getInstance("Windows-MY");
keystore1.load(null, null);
if (keystore1 != null) {
Enumeration<String> enumeration = keystore1.aliases();
while (enumeration.hasMoreElements()) {
String alias = enumeration.nextElement();
if (alias.equals("myalias")) {
char[] keypwd = "123456".toCharArray();
KeyStore.PrivateKeyEntry keyEnt = (KeyStore.PrivateKeyEntry) keystore1.getEntry(alias, new KeyStore.PasswordProtection(keypwd));
System.out.println("getPublicKey: " + keyEnt.getCertificate().getPublicKey().getEncoded());
//show RSAPrivateKey [size=2048 bits, type=Exchange, container={5089EC94-FF45-4339-ACCF-E6ECCCB16899}]
System.out.println("privateKey111: " + keyEnt.getPrivateKey());
}
}
}
公钥输出正确,但私钥如下:
RSAPrivateKey [size=2048 bits, type=Exchange, container={5089EC94-FF45-4339-ACCF-E6ECCCB16899}]
密码正确。如何获取私钥?
【问题讨论】:
-
getPrivateKey()是否返回空值?您的代码注释另有说明。 -
keyEnt.getPrivateKey() 像这样返回 show RSAPrivateKey [size=2048 bits, type=Exchange, container={5089EC94-FF45-4339-ACCF-E6ECCCB16899}] keyEnt.getPrivateKey().getEncoded()返回null,byteArray到Base64String的转换也返回null
-
您询问如何从 PKCS#12 文件中提取,但您的代码示例使用个人 Windows 证书存储,其中可能包含无法导出的密钥(标记为不可导出)。出了什么问题 - 标题还是您的代码?
-
标题错误,我应该从浏览器密钥库获取私钥
标签: java private-key pkcs#12