是RC4还是ARCFOUR? 使用SecretKeySpec时出现InvalidKeyException?

我尝试在我的电脑上运行我的应用程序,但我不断得到这个东西。 我有可能错过一些图书馆吗?

fabsam.crypto.CryptoException: java.security.InvalidKeyException: No installed provider supports this key: javax.crypto.spec.SecretKeySpec at fabsam.crypto.RC4Decoder.decode(RC4Decoder.java:37) ~[bin/:na] ... (skipped my projects stack trace) at java.lang.Thread.run(Thread.java:662) [na:1.6.0_25] Caused by: java.security.InvalidKeyException: No installed provider supports this key: javax.crypto.spec.SecretKeySpec at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6] at fabsam.crypto.RC4Decoder.decode(RC4Decoder.java:27) ~[bin/:na] ... 5 common frames omitted Caused by: java.security.InvalidKeyException: No installed provider supports this key: javax.crypto.spec.SecretKeySpec at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6] at fabsam.crypto.RC4Decoder.decode(RC4Decoder.java:25) ~[fabsam-08.05.11.jar:na] ... 5 common frames omitted 

码:

 cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getBytes(DEFAULT_CHARSET), ALGORITHM)); 

可能是因为我在ALGORITHM变量中使用RC4而不是ARCFOUR ? 当我尝试ARCFOUR时,我得到了这个:

 fabsam.crypto.CryptoException: java.security.InvalidKeyException: Illegal key size or default parameters at fabsam.crypto.RC4Decoder.decode(RC4Decoder.java:37) ~[bin/:na] ... (skipped my projects stack trace) at java.lang.Thread.run(Thread.java:662) [na:1.6.0_25] Caused by: java.security.InvalidKeyException: Illegal key size or default parameters at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6] at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6] at fabsam.crypto.RC4Decoder.decode(RC4Decoder.java:27) ~[bin/:na] ... 5 common frames omitted 

好的,问题不在于代码。 在服务器上运行正常,没有错误。 但是在我的电脑上它会抛出InvalidKeyExceptionexception。 所以这与jvm有关……有什么想法吗?

编辑:我现在看到我得到两个例外。 不是一次,但第一次非法密钥大小,然后没有安装提供商。 我在运行项目时将ALGORITHM设置为“ARCFOUR”。

正如@DaveHowes所提到的,在第一个堆栈跟踪的情况下,您可能正在使用第三方JCE提供程序,并且在第二个堆栈跟踪的情况下,您的密钥大小无效。

Sun包括几个提供者,其参数在此处记录 。 请注意,根据SunJCE提供程序的文档,算法的名称是“ARCFOUR”,而不是“RC4”。 我的猜测是,当你指定“RC4”时,你得到了’fabsam’提供程序实现,不管是什么。 当您指定’ARCFOUR’时,您将获得Sun实施。 另请注意,键大小限制指定’ARCFOUR’必须具有40位和1024位之间的密钥大小(包括5个字节和128个字节)。 程序中的String对象key可能太小或太大,请检查一下。

经过大量的挣扎和搜索以及一切,我得到了正确的答案。 在这里查看我的问题: Java Security:非法的密钥大小或默认参数? 如果你遇到这个问题!