Intereting Posts
Код ошибки 3 Тайм-аут, когда я пытаюсь получить геолокацию с помощью Cordova на платформе Android Как поместить AVD (эмулятор) в режим OFFLINE? Как заполнить растровый объект цветом в Android Как установить текст кнопки изображения (Android)? «Вам нужно добавить как минимум 2 скриншота без Android-ТВ» Android, как очистить недавний список задач, который можно получить с кнопки «Главная» в большинстве телефонов? Отражение – это возможный путь? Фрагмент onSaveInstanceState () никогда не вызывается Intent.FLAG_ACTIVITY_CLEAR_TOP не удаляет стек активности Ошибка при запуске Android studio IDE Как интегрировать шаги Samsung Gear в приложение Android? Как установить переменную в соответствии с ароматами градиента Как получить элементы в навигационном ящике для изменения вида Как запустить ListPreference для одного из своих значений Приложение Google play распространять только для конкретных (тестовых) пользователей Получить электронную почту facebook после входа в систему на Android

Java.security.InvalidKeyException: Недопустимый размер ключа или параметры по умолчанию в android

Я получил следующую ошибку, и я немного застрял: Исключение в теме "main"

java.security.InvalidKeyException: Illegal key size or default parameters at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011) at javax.crypto.Cipher.implInit(Cipher.java:786) at javax.crypto.Cipher.chooseProvider(Cipher.java:849) at javax.crypto.Cipher.init(Cipher.java:1213) at javax.crypto.Cipher.init(Cipher.java:1153) at net.nakou.indie.wtext.engineClass.Session.cryptString(Session.java:52) 

Я застрял, потому что все ответы, которые я нашел, говорят о расширении Java Cryptography Extension (JCE), которые обычно включаются в SDK для Android. Поэтому я думаю, что моя проблема не в этом.

Я, должно быть, что-то забыл, но я не могу найти что. Может быть, мой код неправильный (это мой первый подход криптографии на Java, я не эксперт, а следующий код – это в основном некоторые копии патчей учебников).

Я использую этот код для шифрования и дешифрования строки:

 public String cryptString(String s) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, BadPaddingException, IllegalBlockSizeException { byte[] KeyData = this.cryptKey.getBytes(); SecretKeySpec KS = new SecretKeySpec(KeyData, "Blowfish"); Cipher cipher = Cipher.getInstance("Blowfish"); cipher.init(Cipher.ENCRYPT_MODE, KS); String ret = new String(cipher.doFinal(s.getBytes("UTF-8"))); return ret; } public String decryptString(byte[] s) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException { byte[] KeyData = this.cryptKey.getBytes(); SecretKeySpec KS = new SecretKeySpec(KeyData, "Blowfish"); Cipher cipher = Cipher.getInstance("Blowfish"); cipher.init(Cipher.DECRYPT_MODE, KS); String ret = new String(cipher.doFinal(s)); return ret; } 

И следующий ключ:

 private String cryptKey = "qkjll5@2md3gs5Q@FDFqf"; 

Спасибо вам, ребята.

Solutions Collecting From Web of "Java.security.InvalidKeyException: Недопустимый размер ключа или параметры по умолчанию в android"

private String cryptKey = "qkjll5@2md3gs5Q@FDFqf";

По умолчанию Java поддерживает только 128-битное шифрование

128bits == 16Bytes == 16 Chars.

Таким образом, cryptKey не может превышать 16 символов.

Если вы хотите превысить более 16 символов, вам необходимо установить расширение Java Cryptography Extension (JCE) Unlimited Strength .

Почему 128 бит?