使用AES和长密钥进行一次密码密码解密

时间:2014-01-29 02:39:51

标签: java encryption aes block-cipher

我在十六进制字符串"140b41b22a29beb4061bda66b6747e14"中获得了此密钥,并请求使用实现ECB的AES解密一个分组密码。

众所周知,密钥长度必须为16个字节。但给定的键包含对应于大于一个字节的字符的元素(例如0xb2,其char值为²,对应于2个字节。)

事实上,如果我将十六进制字符串键转换为一个键字符串我获得" A²*)¾´Úf¶t~ ",那么如果我应用方法key.getBytes().length,我得到的是密钥长度为21个字节。

我的问题是:有没有办法在Java中使用AES加密一个16字节长的密文?

1 个答案:

答案 0 :(得分:1)

您的密钥看起来大小合适 - 只是不要将其视为带有意义字符的字符串。相反,使用十六进制转换方法将其转换为16字节数组并将其用作键。

E.g。

String keyString = "140b41b22a29beb4061bda66b6747e14";
byte[] keyBytes = DatatypeConverter.parseHexBinary(keyString);
SecretKey key = new SecretKeySpec(keyBytes, "AES");