Я пытаюсь зашифровать данные и отправить их на сервер, используя 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);
Если вы получаете "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).
Для 256-битного ключа необходимо добавить JCE jar в проект, и указанный код будет работать для этого.
JCE Jar: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
BlowfishUtility: https://github.com/NikhilPareek88/BlowfishUtility