Java AES加密奇怪的结果

时间:2012-08-31 11:18:29

标签: encryption aes

我正在尝试使用AES算法加密一个简单的字符串。 一切似乎都很好,我可以解密它。 出于好奇,我将加密数据打印到控制台和i 很惊讶地看到它。

输入字符串:原始文本字符串。

加密数据:Díå¼[¶cE¶Ÿ¸'E,;èýaó1ÒŽ&ýÈZ

解密数据:原始文本字符串。

任何人都可以解释为什么加密数据位的长度是输入字符串的两倍......?

2 个答案:

答案 0 :(得分:1)

加密适用于固定大小的数据块。在编码期间添加适当的填充,并在解码期间删除。

答案 1 :(得分:0)

我不会依赖于显示特殊字符String来告诉它的长度。在加密时,您通常会获得byte[]length应该为您提供准确的值。如果您想要打印,十六进制表示看起来更清晰:

public static void showHex(byte[] data) {
    final String HEXDIGITS = "0123456789abcdef";
    StringBuilder res = new StringBuilder();

    for (int i = 0; i < data.length; i++) {
        int v = data[i] & 0xff;
        res.append(HEXDIGITS.charAt(v >> 4));
        res.append(HEXDIGITS.charAt(v & 0xf));
    }

    System.out.println(res);
}