0

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

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));

可能是因为我RC4没有ARCFOUR在 ALGORITHM 变量中使用吗?当我尝试 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”。

4

2 回答 2

0

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

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

于 2011-05-09T11:09:24.477 回答
0

经过大量的挣扎和搜索以及一切,我得到了正确的答案。在这里检查我的问题:Java Security: Illegal key size or default parameters?如果你遇到这个问题!

于 2011-06-26T11:33:50.590 回答