我正在编写一个使用证书(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
答案 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无限强度政策文件。