Java 无此算法异常PBEWISH256和128位

Java 无此算法异常PBEWISH256和128位,java,encryption,bouncycastle,Java,Encryption,Bouncycastle,我正在开发一个Java跨平台客户端应用程序,该应用程序将使用Bouncy Castle API encryption中的PBewithsha256和128bitaes-CBC-BC将敏感信息存储在本地文件中 以下代码: public static void main(String[] args) throws NoSuchAlgorithmException { Security.addProvider(new BouncyCastleProvider()); for (Pro

我正在开发一个Java跨平台客户端应用程序,该应用程序将使用Bouncy Castle API encryption中的PBewithsha256和128bitaes-CBC-BC将敏感信息存储在本地文件中

以下代码:

public static void main(String[] args) throws NoSuchAlgorithmException {
    Security.addProvider(new BouncyCastleProvider());

    for (Provider provider : Security.getProviders()) {
        for (Provider.Service service : provider.getServices()) {
            System.out.println(provider.getName() + ": " + service.getAlgorithm());
        }
    }

    SecretKeyFactory.getInstance("PBEWITHSHA256AND128BITAES-CBC-BC");
}
给我以下例外情况:

SUN: NativePRNG
SUN: SHA1PRNG
SUN: SHA1withDSA
[...]
BC: PBEWITHSHAAND192BITAES-CBC-BC
BC: PBEWITHSHAAND256BITAES-CBC-BC
BC: PBEWITHSHA256AND128BITAES-CBC-BC
BC: PBEWITHSHA256AND192BITAES-CBC-BC
BC: PBEWITHSHA256AND256BITAES-CBC-BC
BC: DESMAC
[...]
Exception in thread "main" java.security.NoSuchAlgorithmException: PBEWITHSHA256AND128BITAES-CBC-BC SecretKeyFactory not available
    at javax.crypto.SecretKeyFactory.<init>(DashoA13*..)
    at javax.crypto.SecretKeyFactory.getInstance(DashoA13*..)
    at TestBouncyCastle.main(TestBouncyCastle.java:47)
SUN:NativePRNG
孙:Sha1png
SUN:SHA1withDSA
[...]
BC:PBEWITHSHAAND192BITAES-CBC-BC
BC:PBEWITHSHAAND 256BITAES-CBC-BC
BC:PBEWITHSA256和128位AES-CBC-BC
BC:PBEWITHSA256和192BITAES-CBC-BC
BC:PBEWITHSA256和256BITAES-CBC-BC
BC:DESMAC
[...]
线程“main”java.security.NoSuchAlgorithmException中的异常:PBEWithSHA256A和128BitAES-CBC-BC SecretKeyFactory不可用
在javax.crypto.SecretKeyFactory(DashoA13*)
位于javax.crypto.SecretKeyFactory.getInstance(DashoA13*)
位于TestBouncyCastle.main(TestBouncyCastle.java:47)
这很奇怪,因为PBEWITHSA256和128BitAES-CBC-BC被列为可用服务

在Bouncy Castle wiki上,有以下内容:

注意:要充分利用该提供程序,必须安装 您正在使用的JVM中有无限的策略文件-这些可以是 下载自

如果我理解正确,我需要在客户端JRE中安装一个文件。我希望避免在应用程序中提供JRE。附近有路吗


谢谢

仅仅因为
pbewithsha256和128位aes-CBC-BC
算法名受支持,并不意味着
pbewithsha256和128位aes
也受支持。你的问题是什么?标题中提到了不支持的算法的名称,正文提供了支持的算法列表,标题中的算法不在其中。然后你问了一些不一致的问题,关于不想在应用程序中提供JRE。哦,对不起,我的错,我在这篇评论中尝试了一个建议:忘了把-CBC-CB放回去。我对pbewithsha256和128bitaes-CBC-BC也有同样的例外。我会解决这个问题。请重新检查-我正在使用BC 1.50从您的代码中获得正确的
SecretKeyFactory
实例。即使在默认的受限加密下,也应该允许使用128位密钥,因此这也不应该是一个问题。您使用的JVM中是否安装了无限制策略文件?我想知道是否有办法解决这个问题,或者是否有可能动态安装这个组件。