【发布时间】:2012-05-03 23:32:02
【问题描述】:
我正在尝试加密 Python 程序中的一些数据并将其保存,然后在 Java 程序中解密该数据。在 Python 中,我是这样加密的:
from Crypto.Cipher import AES
KEY = '12345678901234567890123456789012'
def encrypt(data):
cipher = AES.new(KEY, AES.MODE_CFB)
return cipher.encrypt(data)
在 Java 中,我是这样解密的:
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class Encryption {
private static byte[] KEY = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2' };
public static byte[] decrypt(byte[] data) throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher c = Cipher.getInstance("AES/CFB/NoPadding");
Key key = new SecretKeySpec(KEY, "AES");
c.init(Cipher.DECRYPT_MODE, key);
return c.doFinal(data);
}
}
但我得到Exception in thread "main" java.security.InvalidKeyException: Illegal key size or default parameters。显然,我做错了什么。但是什么?
【问题讨论】:
-
您是否有合适的 jar 包来支持更高强度的加密?默认情况下,java 不允许强键。您的错误与 python 结束无关,与您尝试使用的密钥有关。 stackoverflow.com/questions/2568841/… 查看 Mohamed Mansour 的答案
-
用一个简单的小钥匙试试这个,看看它是否仍然发生。
标签: java python encryption aes