如何解决错误Salt必须是8个字节长

时间:2016-10-08 12:53:23

标签: itext digital-signature keystore pfx digital

我正在编写一个使用证书(pfx文件)签署pdf的程序。对于少数证书,我将获得以下异常。

java.security.InvalidAlgorithmParameterException: Salt must be at least 8 bytes long

执行以下代码时会发生这种情况。

Keystore ks = KeyStore.getInstance("pkcs12");

我在第123行的java文件中遇到异常。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/com/sun/crypto/provider/HmacPKCS12PBESHA1.java?av=h

2 个答案:

答案 0 :(得分:2)

您的密钥库有一个或多个盐长度小于8的证书。加密程序至少需要8个字节。

我建议只使用您需要的一个证书创建一个新的密钥库,并尝试使用该证书进行签名。

答案 1 :(得分:0)

我使用pkcs12-DEF密钥库解决了异常。我在下面添加了我的代码行。

BouncyCastleProvider provider = new BouncyCastleProvider();
Security.addProvider(provider);
KeyStore ks = KeyStore.getInstance("pkcs12-DEF");

之前我没有将BountyCastleProvider添加到安全性,因为我无法获得pkcs12-DEF密钥库的实例。 除此之外,我还从http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html位置下载了jar文件,并将其替换为Java \ Jdk1.7 \ jre \ lib \ security中的jar文件。这些是JCE 7无限强度政策文件。