如何使用SHA-1哈希作为AES密钥

时间:2018-10-30 14:54:31

标签: java arrays oop aes sha1

我想结合使用哈希和加密来提高安全性。因此,我可以使用从SHA-1生成的哈希密钥作为AES中的密钥。 例如,我有一个密码“ 50”,我为此计算了SHA-1哈希(e1822db470e60d090affd0956d743cb0e7cdf113),并且我想将这些字节作为AES-128的密钥。 实施此功能时需要注意哪些事项? 我应该在128位后截断还是进行某种折叠?

代码在这里:

import java.security.MessageDigest; 
public class MessageDigestExample {
public static void main(String[] args)throws Exception{
String input = "This is a message";
MessageDigest hash = MessageDigest.getInstance("SHA1");
System.out.println("input : " + input);
hash.update(Utils.toByteArray(input));
System.out.println("digest : " + Utils.toHex(hash.digest()));
} }

1 个答案:

答案 0 :(得分:0)

虽然AES-128提供了足够的安全性,但使用SHA-1中的密钥可能不是。

除此之外:

您的问题更多是辩论,而不是容易回答。我想指出以下答案:https://stackoverflow.com/a/19863149/10353914

使用所提供的信息,您的问题有点过时了-最好使用PBKDF2,在其中您可以将输出哈希大小设置为128位。