【问题标题】:One block cipher decryption with an AES and long key使用 AES 和长密钥的一次分组密码解密
【发布时间】:2014-01-29 02:39:50
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java encryption aes block-cipher


    【解决方案1】:

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

    例如

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多