我尝试在我的电脑上运行我的应用程序,但我不断得到这个东西。我有可能错过一些图书馆吗?
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
好的,问题不在于代码。在服务器上运行正常,没有错误。但是在我的电脑上它会抛出InvalidKeyException异常。所以这与jvm相关......有什么想法吗?
修改 我现在看到我得到两个例外。不是一次,但第一次非法密钥大小,然后没有安装提供商。我在运行项目时将ALGORITHM设置为“ARCFOUR”。
答案 0 :(得分:0)
正如@DaveHowes所提到的,在第一个堆栈跟踪的情况下,您可能正在使用第三方JCE提供程序,并且在第二个堆栈跟踪的情况下,您的密钥大小无效。
Sun包括几个提供参数的提供商here。请注意,根据documentation for the SunJCE provider,算法的名称是“ARCFOUR”,而不是“RC4”。我的猜测是,当你指定“RC4”时,你得到了'fabsam'提供程序实现,不管是什么。当您指定'ARCFOUR'时,您将获得Sun实施。另请注意,键大小限制指定'ARCFOUR'必须具有40位和1024位之间的密钥大小(包括5个字节和128个字节)。程序中的String对象key
可能太小或太大,请检查一下。
答案 1 :(得分:0)
经过大量的挣扎和搜索以及一切,我得到了正确的答案。 如果您遇到此问题,请在此处查看我的问题:Java Security: Illegal key size or default parameters?