256-битное шифрование Blowfish в Java

1

Я пытаюсь зашифровать данные и отправить их на сервер, используя 256 бит blowfish, но я не знаю, что является надлежащим поставщиком для размера ключа. Я попытался изменить CFB32 и CFB8, но не работает. Я пробовал iv с 8 16 и 32, но он не работает. Я пробовал OAEPWithSHA-256AndMGF1Padding, и это не сработало. и когда я использовал blowfish/ECB/PKCS1Padding, он дал мне сообщение, которое не может найти ни одного поставщика поддержки blowfish/ECB/PKCS1Padding.

   // Create a Blowfish key
    KeyGenerator keyGenerator = KeyGenerator.getInstance("Blowfish");

    // Now set the keysize to 256 bits
    keyGenerator.init(256);

    Key key = keyGenerator.generateKey();

    System.out.println("Done generating the key.");

    // Create a cipher using that key to initialize it
    Cipher cipher = Cipher.getInstance("Blowfish/CFB8/NoPadding");


        //Cipher encrypter = Cipher.getInstance("Blowfish/C/NoPadding");
    System.out.println("good here");
     SecureRandom random = new SecureRandom();
    byte[] iv = new byte[16];
    random.nextBytes(iv);


  IvParameterSpec spec = new IvParameterSpec(iv);

    cipher.init(Cipher.ENCRYPT_MODE, key,spec);
Теги:
encryption
blowfish

2 ответа

2

Если вы получаете "java.security.InvalidKeyException: недопустимый размер ключа" при попытке использовать размер ключа 256, вам необходимо загрузить файлы политики Jurisdiction JCE Unlimited Strength для вашего JDK/JRE. Неограниченная политика позволит вам использовать размеры ключей, превышающие предопределенные пределы (128 бит для blowfish). Одинаковую политику JCE 7 JDK 7 можно скачать здесь, обязательно прочитайте readme.txt, включенную в архив, и следуйте инструкциям.

Если вы получаете значение "java.security.InvalidAlgorithmParameterException: неправильная длина IV: должно быть" байты длинны ", то у вас есть несоответствие между фактической длиной массива IV и длиной IV, ожидаемой режимом и дополнением, указанным в Cipher.getInstance(). Для "Blowfish/CFB8/NoPadding" значение IV должно быть 8 байтов, но в коде вы создаете 16-байтовый IV-массив.

Если у вас есть другие проблемы, вы должны действительно обновить свой вопрос и указать, какова фактическая проблема и каково фактическое исключение (желательно с помощью stacktrace).

  • 0
    Спасибо за вашу помощь. Это полезно и действительно полезно, мой код работает нормально после того, как я скачал неограниченную политику JCE Oracle JDK 7. а насчет IV да, это 8. действительно до того, как я попробовал 8 и 16 и 32, потому что я не знал точно, в чем проблема. И теперь стало ясно, что проблема была в том, что JCE после загрузки все работает нормально. еще раз спасибо.
  • 0
    @ user3397765 Теперь примите ответ Олега как правильный ответ.
0

Для 256-битного ключа необходимо добавить JCE jar в проект, и указанный код будет работать для этого.

JCE Jar: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

BlowfishUtility: https://github.com/NikhilPareek88/BlowfishUtility

Ещё вопросы

Сообщество Overcoder
Наверх
Меню