【发布时间】:2015-05-09 22:41:06
【问题描述】:
我创建了一个 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
【问题讨论】:
-
Java
keytool程序不允许您创建 KeyStore,除非您输入长度为 6 个或更多字符的密码。你是如何生成你的私钥的? -
重新格式化堆栈跟踪以避免换行。