Java org.bouncycastle.crypto.fips.FipsOperationError:模块校验和失败:输入

Java org.bouncycastle.crypto.fips.FipsOperationError:模块校验和失败:输入,java,encryption,cryptography,cypher,bouncycastle,Java,Encryption,Cryptography,Cypher,Bouncycastle,我有一个示例代码,其中我刚刚用公钥解密了一个数据,得到了“org.bounchycastle.crypto.fips.FipsOperationError:Module checksum failed:entry”错误 当我试图创建Cipher实例时,它抛出异常 private static boolean checkHashPadding(PublicKey key, byte[] signature) { if(key.getAlgorithm().equalsIgnore

我有一个示例代码,其中我刚刚用公钥解密了一个数据,得到了“org.bounchycastle.crypto.fips.FipsOperationError:Module checksum failed:entry”错误

当我试图创建Cipher实例时,它抛出异常

   private static boolean checkHashPadding(PublicKey key, byte[] 
signature) {

    if(key.getAlgorithm().equalsIgnoreCase("RSA")) {
        try {
            // Unencrypt the data to get the hash (as in PKCS#1 format)
            Cipher c = Cipher.getInstance("RSA/NONE/PKCS1Padding", new 
    BouncyCastleFipsProvider()); // -- IT is Failing here
            c.init(Cipher.DECRYPT_MODE, key);
            byte[] hashDER = c.doFinal(signature);
            System.out.println(hashDER);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    return true;
}
主要功能:

公共静态void main(字符串s[]{

}

添加堆栈跟踪:

Exception in thread "main" 
org.bouncycastle.crypto.fips.FipsOperationError: Module checksum 
failed: entry
at org.bouncycastle.crypto.fips.FipsStatus.checksumValidate(Unknown 
Source)
at org.bouncycastle.crypto.fips.FipsStatus.isReady(Unknown Source)
at 
org.bouncycastle.crypto.CryptoServicesRegistrar.getDefaultMode(Unknown 
Source)
at org.bouncycastle.crypto.CryptoServicesRegistrar.<clinit>(Unknown 
Source)
at org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.<init> 
(Unknown Source)
at org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.<init> 

将引发异常:

  • 当BC FIPS jar损坏时,因为有一种方法可以计算jar的校验和,并使用META-INF/HMAC.SHA256进行验证

  • 例如,当它与其他一些jar一起使用时,在我的例子中,我有
    bc fips source.jar
    。当我在eclipse中将其从构建路径中删除时,我的示例代码开始工作


  • 如果您需要FIPS,请确保您使用的bc FIPS jar与从bc下载的完全相同,没有任何更改;如果你不需要FIPS(99%的用户不需要),就不要使用它(在这种情况下,你不需要Oracle/Sun/OpenJDK中的BC provider用于RSA签名,但CMS确实需要BC,所以你也可以使用它)。我需要FIPS jar,我仍然在使用一个,它显示错误。NPE意味着你有一个截断的jar文件,请再次下载。下载页面上也有SHA1和SHA256校验和,所以请对照它们检查文件。我下载了校验和,但它与jar的META-INF/HMAC.SHA256中的校验和不匹配。即使在我再次下载JAR时,校验和也是不同的。@AmritRaj您指的是BC-FJA 1.0.1中已经修复的缺陷,该缺陷上周刚刚获得认证。您使用的是1.0.1吗?一般来说,不应该将source.jar添加到类路径中。您可以在IDE中引用它们,但它们不应该出现在类路径本身中。
    Exception in thread "main" 
    org.bouncycastle.crypto.fips.FipsOperationError: Module checksum 
    failed: entry
    at org.bouncycastle.crypto.fips.FipsStatus.checksumValidate(Unknown 
    Source)
    at org.bouncycastle.crypto.fips.FipsStatus.isReady(Unknown Source)
    at 
    org.bouncycastle.crypto.CryptoServicesRegistrar.getDefaultMode(Unknown 
    Source)
    at org.bouncycastle.crypto.CryptoServicesRegistrar.<clinit>(Unknown 
    Source)
    at org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.<init> 
    (Unknown Source)
    at org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.<init> 
    
    Caused by: java.lang.NullPointerException: entry
    at java.util.zip.ZipFile.getInputStream(ZipFile.java:342)
    at java.util.jar.JarFile.getInputStream(JarFile.java:412)
    ... 9 more