1
String key = "my_own_key_which_should_be_quite_long";
byte[] keyData = key.getBytes();
SecretKeySpec myKey = new SecretKeySpec(keyData, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, myKey);
String input = "string to encrypt";
try {
byte[] encrypted = cipher.doFinal(input.getBytes());
System.out.println(new String(encrypted));
} catch (Exception ex) {
ex.printStackTrace();
}
javax.crypto.IllegalBlockSizeException:7 doFinal方法拋出7個尾隨字節。問題是什麼? 什麼是最有趣的 - 無論密鑰字符串多長時間,異常總是相同的 - 7個尾隨字節。javax.crypto.IllegalBlockSizeException當在java中使用blowfish時
除此之外,你真的* *不應該使用平臺的默認編碼將字符串轉換爲字節數組,你不應該嘗試將不透明的二進制數據(加密字節數組)轉換爲類似的字符串 - 使用base 64. –
可能的重複[如何解決javax.crypto.IllegalBlockSizeException:數據不是塊大小對齊](http://stackoverflow.com/問題/ 4062015/how-to-solve-javax-crypto-illegalblocksizeexception-data-not-block-size-aligned) –
OMFG,Jon Skeet評論我的問題,現在我的生活充滿了含義 – Sergey