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

Я пытаюсь зашифровать данные и отправить их на сервер, используя 256-битную иглобрюхую рыбу, но я не знаю, какой провайдер подходит для размера ключа. Я пытался изменить 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);

person user3397765    schedule 17.03.2014    source источник


Ответы (2)


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

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

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

person Oleg Estekhin    schedule 17.03.2014
comment
Спасибо за вашу помощь. Это полезно и действительно полезно, мой код отлично работает после того, как я загрузил неограниченную политику JCE Oracle JDK 7. а насчет IV да это 8. на самом деле раньше я пробовал и 8 и 16 и 32 потому что не знал точно в чем проблема. И теперь стало ясно, что проблема была в JCE, после его загрузки все работает нормально. еще раз спасибо. - person user3397765; 18.03.2014
comment
@user3397765 user3397765 Теперь примите ответ Олега как правильный ответ. - person MattWeiler; 13.06.2016

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

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

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

person nikhil pareek    schedule 25.08.2017