如果我使用自己的密钥,为什么需要哈希



如果我使用自己的密钥,为什么需要散列? 我发现到处都是

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

有人可以解释一下在这里散列有什么好处吗?

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

由于哈希算法,即使是短密码(如"123456"或"god")也会转换为固定长度的20字节哈希

最新更新