Java RC6密钥生成器不可用

Java RC6密钥生成器不可用,java,cryptography,Java,Cryptography,我会尝试使用RC6算法,但我有一个错误: RC6密钥生成器不可用 如何获取rc6的密钥生成器 线程“main”java.security.NoSuchAlgorithmException中出现异常:RC6 KeyGenerator不可用 位于javax.crypto.KeyGenerator(KeyGenerator.java:169) 位于javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:223) 在RC6.encrypt(RC6.

我会尝试使用RC6算法,但我有一个错误:

RC6密钥生成器不可用

如何获取rc6的密钥生成器

线程“main”java.security.NoSuchAlgorithmException中出现异常:RC6 KeyGenerator不可用 位于javax.crypto.KeyGenerator(KeyGenerator.java:169) 位于javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:223) 在RC6.encrypt(RC6.java:27) 位于RC6.main(RC6.java:16)


RC6不是由Oracle安全提供商之一提供的算法。提供者提供了
密码
以及
密钥生成器
背后的算法实现

在类路径中添加Bouncy Castle provider.jar后,这应该可以工作:

static {
    Security.addProvider(new BouncyCastleProvider());
}


您可能还需要在JRE文件夹中安装无限加密文件。

你好,Marteen,谢谢您的回答。是的,我已经安装了无限加密。我已经下载了BouncyCastle的jar并将其放在这里,然后我将Security.addProvider行(new BouncyCastleProvider())放在主目录中。但现在我有一个错误(在解密行):焊盘块损坏为什么?怎么了?我不知道怎么了。这可能是使用了错误的密钥或更改了密文。在我的系统上,上面的代码工作正常。请注意,RC6是一种分组密码。您需要确保使用正确的操作模式和IV,因为Java和BC提供商倾向于使用ECB模式,这是不安全的。但我想,在你让它工作之后,这是需要担心的。对不起,我分心了,在解密过程中有另一个密钥生成器。非常感谢你,马汀!啊,看看代码,你似乎使用了
SecureRandom
的种子,这就是它在我的机器上工作的原因。不要这样做。并非所有的实现都会以这种方式生成相同的值,因此如果以这种方式加密数据,则可能会丢失所有数据。只需使用
newsecurerandom()
,不要期望它生成相同的值。
static {
    Security.addProvider(new BouncyCastleProvider());
}