2011-10-18 56 views
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時

+0

除此之外,你真的* *不應該使用平臺的默認編碼將字符串轉換爲字節數組,你不應該嘗試將不透明的二進制數據(加密字節數組)轉換爲類似的字符串 - 使用base 64. –

+0

可能的重複[如何解決javax.crypto.IllegalBlockSizeException:數據不是塊大小對齊](http://stackoverflow.com/問題/ 4062015/how-to-solve-javax-crypto-illegalblocksizeexception-data-not-block-size-aligned) –

+0

OMFG,Jon Skeet評論我的問題,現在我的生活充滿了含義 – Sergey

回答

1

總之,使用Gnucrypto庫已經從塊大小問題就解決了這個問題

相關問題