如果我使用自己的密钥,为什么需要散列?我发现它无处不在,如下所示
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
有人可以解释一下哈希在这里有什么好处?
答案 0 :(得分:2)
因为在你的情况下AES需要一个128位密钥才能构建它需要16个字节。如何获得这16个字节?最常见的方法是哈希用户密码并获取哈希的前16个字节。这样做将确保AES算法始终接收正确的16字节密钥。
由于哈希算法,即使是“123456”或“上帝”这样的短密码也会被转换为固定长度的20字节哈希