这种方法会使sha256难以破解吗?

时间:2015-02-03 17:10:10

标签: java hashalgorithm

这种方法会让sha256难以破解吗?

 public byte[] hash(String password) throws NoSuchAlgorithmException {
     MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
     byte[] passBytes = password.getBytes();
     byte[] passHash = sha256.digest(passBytes);
     for (int i = 0; i < 10; i++) {
         passHash = sha256.digest(passHash);
     }
     return passHash;
 }

2 个答案:

答案 0 :(得分:2)

你所拥有的是键拉伸,它会使SHA更难破解。基本过程是略微增加服务器的工作量,以便大规模增加攻击者必须完成的工作。

这是有效的,因为服务器从已知的明文输入中导出哈希,而攻击者正在对明文必须进行许多猜测。这意味着当攻击者必须多次执行此操作时,服务器会将密钥拉伸一次。

您可以阅读有关此技术的更多信息here。一些哈希算法,例如bcrypt,总是被认为涉及多个这样的轮次。

答案 1 :(得分:1)

SHA-256是一种不可逆的单向加密哈希函数。应用该哈希10次并不会创建任何额外的安全性,尽管它确实使得典型的彩虹攻击更加困难(但使用Salt将具有相同的优势)。您的散列机制具有相当大的缺点,因为它需要10倍的运行时间。

相关问题