我寫了一個加密和解密函數。加密工作正常,但我總是在解密中得到IllegalBlockSizeException。IllegalBLockSizeException解密時
public static String aes_encrypt (String text, String key)
{
SecretKey skey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
cipher.init(Cipher.ENCRYPT_MODE, skey);
return new String((cipher.doFinal(text.getBytes())));
}
而這裏的解密函數:
public static String aes_decrypt (String text, String key)
{
SecretKey skey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
cipher.init(Cipher.DECRYPT_MODE, skey);
return new String((cipher.doFinal(text.getBytes())));
}
下面是測試這個簡單的main方法:
public static void main (String args[])
{
String text = "Hello, world!";
String key = "nv93h50sk1zh508v";
String en, de;
System.out.println("Text: " + text);
System.out.println("Encrypted: " + (en = aes_encrypt(text, key))
+ " length = " + en.length());
System.out.println("Decrypted: " + (de = aes_decrypt(en, key)));
}
有誰知道如何「墊」的加密字符串正確使我可以解密它? (我試過用填充0的字符串,直到長度爲16的整數倍,但得到的東西像string not properly padded
)
感謝
你爲什麼寫自己的代碼?你有沒有試過「Bouncy Castle」圖書館? (http://www.bouncycastle.org/java.html) – 2012-04-25 19:23:59
我寧可不使用第三方庫。 – 2012-04-25 19:28:53
@CarlosTasada Bouncy Castle可以做很多事情。如果您的意思是使用CMS等容器格式,請儘可能多地指出並指出一個示例。 – 2012-04-25 21:14:23