我创建了一个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
答案 0 :(得分:0)
key = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS,new char[0]);
这不是指定无密钥的正确方法。在这里,您指定一个零长度键。这不是一回事。试试这个:
key = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS, null);