2017-10-12 71 views
0

当执行以下代码:BadPaddingException装载P12密钥库

KeyStore ks = KeyStore.getInstance(storeType); 
    ks.load(new FileInputStream(keyStore), storePassword.toCharArray()); 

    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
    kmf.init(ks, keyPassword.toCharArray()); 

我得到一个异常:

java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. 
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. 

这原本是从JKS密钥库转换为使用keytool的一个PKCS12密钥库。我试图创建一个新的PKCS12密钥库,但没有运气。

回答

0

JKS支持使用两个密码,一个用于商店,另一个用于密钥。 PKCS12没有。使用keytool时,您会收到关于此的警告。

从新密钥库迁移时,代码可能会继续使用旧密钥密码,在此情况下密码不相同。

Java 9提供了一个更好的异常消息,表明它可能由解密过程中的错误密钥引起。

在这种情况下,请确保传入与商店密码匹配的密钥密码。