Java Applet Windows-MY密钥库PrivateKey getEncoded为null

时间:2015-03-28 10:34:29

标签: java security applet certificate x509certificate

根据我对documentation的理解,应该有可能通过服务"Windows-MY"访问Microsoft Windows KeyStore。

当我从keyStore加载PrivateKey时,我获得了null的privateKey.getEncoded()。

如何从Windows密钥库正确访问PrivateKey?

尝试使用以下方式访问它:

KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null);
PrivateKey privateKey = (PrivateKey) ks.getKey("myKeyAlias", null);
System.out.println("privateKey:" + privateKey));
System.out.println("getEncoded:" + privateKey.getEncoded());

我得到的输出:

privateKey:RSAPrivateKey [size=2048 bits, type=Exchange, container=myKeyAlias]
getEncoded:null

使用JRE 1.8并使用Win7和8.1进行测试

1 个答案:

答案 0 :(得分:2)

MSCAPI似乎不支持私钥导出。

首先,Key.getEncoded() javadoc指定:

  

以主编码格式返回密钥,如果此密钥不支持编码,则返回null。

如果您查看source code of the Java crypto provider for MSCAPIgetEncoded()方法实际上会在所有情况下返回null