如果我使用自己的密钥,为什么需要散列? 我发现到处都是
如下图所示 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字节哈希