Ответ 1
После долгих битв, поиска и всего, я получил правильный ответ. Проверьте мой вопрос здесь: Безопасность Java: недопустимый размер ключа или параметры по умолчанию?, если вы столкнулись с этой проблемой!
Я попробовал запустить приложение на своем компьютере, но я продолжаю получать эту вещь. Возможно ли, что мне не хватает некоторых библиотек?
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
not 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" при запуске моего проекта.
После долгих битв, поиска и всего, я получил правильный ответ. Проверьте мой вопрос здесь: Безопасность Java: недопустимый размер ключа или параметры по умолчанию?, если вы столкнулись с этой проблемой!
Как упоминалось в @DaveHowes, вероятно, вы используете сторонний провайдер JCE в случае первого stacktrace и что ваш ключ недействителен в случае второго stacktrace.
Sun включает несколько поставщиков, параметры которых документированы здесь. Обратите внимание, что согласно документации для поставщика SunJCE, имя алгоритма - "ARCFOUR" , а не "RC4". Я предполагаю, что когда вы указали "RC4", вы получили реализацию поставщика "fabsam", что бы это ни было. Когда вы указали "ARCFOUR", вы получили реализацию Sun. Также обратите внимание на ограничения на ключи, которые указывают, что "ARCFOUR" должен иметь ключ от 40 бит до 1024 бит включительно (это 5 байтов и 128 байтов включительно). Объект String key
в вашей программе может быть слишком маленьким или слишком большим, пожалуйста, проверьте это.