无法使用java

时间:2015-05-07 09:29:08

标签: java keystore keytool jks

我创建了一个pkcs12文件,其中包含没有任何密码的私钥条目。 我可以使用keytool实用程序访问p12文件,而无需提供任何密码。

我无法以编程方式进行。 当我在下面尝试时

if( keyStore.isKeyEntry(KEYSTORE_ALIAS)) {
    key = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS,new char[0]);
}

我收到以下异常

Caused by: javax.crypto.BadPaddingException: Given final block not
properly padded
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
    at com.sun.crypto.provider.PKCS12PBECipherCore.implDoFinal(PKCS12PBECipherCore.java:355)
    at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(PKCS12PBECipherCore.java:387)
    at javax.crypto.Cipher.doFinal(Cipher.java:2087)
    at sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyStore.java:266)
    ... 2 more

1 个答案:

答案 0 :(得分:0)

key = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS,new char[0]);

这不是指定无密钥的正确方法。在这里,您指定一个零长度键。这不是一回事。试试这个:

key = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS, null);