Это RC4 или ARCFOUR?InvalidKeyException при использовании SecretKeySpec? - PullRequest
0 голосов
/ 08 мая 2011

Я пытался запустить свое приложение на моем компьютере, но я продолжаю получать эту вещь. Возможно ли, что мне не хватает некоторых библиотек?

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 .. Есть идеи?

Edit: Теперь я вижу, что я получаю оба исключения. Не сразу, но впервые неверный размер ключа, а затем не установленный провайдер. Я установил для ALGORITHM значение "ARCFOUR" при запуске моего проекта.

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

После долгих попыток, поисков и прочего я получил правильный ответ.Проверьте мой вопрос здесь: Безопасность Java: недопустимый размер ключа или параметры по умолчанию? если у вас возникла эта проблема!

0 голосов
/ 09 мая 2011

Как указывает @DaveHowes, вероятно, вы используете стороннего поставщика JCE в случае первой трассировки стека, и что ваш размер ключа недопустим в случае второй трассировки стека.

Sunвключает в себя несколько провайдеров, параметры которых задокументированы здесь .Обратите внимание, что согласно документации для провайдера SunJCE , алгоритм называется «ARCFOUR», а не «RC4».Я предполагаю, что когда вы указали "RC4", вы получили реализацию провайдера 'fabsam', что бы это ни было.Когда вы указали 'ARCFOUR', вы получили реализацию Sun.Обратите также внимание на ограничения размера ключей, которые указывают, что «ARCFOUR» должен иметь размер ключа от 40 до 1024 бит включительно (это 5 байтов и 128 байтов включительно).Объект String key в вашей программе может быть слишком маленьким или слишком большим, пожалуйста, проверьте это.

...