使用AES和长密钥的一块密码解密



我收到了这个十六进制字符串的密钥:"140b41b22a29beb4061bda66b6747e14",并被要求用实现ECB的AES解密一个一块密码。

正如我们所知,密钥必须是16字节长。但是给定的密钥包含与大于一个字节的字符相对应的元素(例如,其字符值为对应于2个字节的²0xb2)。

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

我的问题是:在Java中给定这个密钥,有没有办法用AES加密16字节长的密文?

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

例如

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

相关内容

  • 没有找到相关文章

最新更新