如果我使用自己的密钥,为什么需要散列?

时间:2014-02-24 11:46:22

标签: java encryption aes encryption-symmetric

如果我使用自己的密钥,为什么需要散列?我发现它无处不在,如下所示

        key = myKey.getBytes("UTF-8");
        sha = MessageDigest.getInstance("SHA-1");
        key = sha.digest(key);
        key = Arrays.copyOf(key, 16);
        secretKey = new SecretKeySpec(key, "AES");

有人可以解释一下哈希在这里有什么好处?

1 个答案:

答案 0 :(得分:2)

因为在你的情况下AES需要一个128位密钥才能构建它需要16个字节。如何获得这16个字节?最常见的方法是哈希用户密码并获取哈希的前16个字节。这样做将确保AES算法始终接收正确的16字节密钥。

由于哈希算法,即使是“123456”或“上帝”这样的短密码也会被转换为固定长度的20字节哈希