什么是更好的? Password_hash vs. SHA256 vs. SHA1 vs. md5

Posted

技术标签:

【中文标题】什么是更好的? Password_hash vs. SHA256 vs. SHA1 vs. md5【英文标题】:What is better? Password_hash vs. SHA256 vs. SHA1 vs. md5 【发布时间】:2015-05-22 17:40:39 【问题描述】:

salt 有什么更好的密码存储方式?

MD5:

$hash = md5($password . $salt);

密码哈希:

$hash = password_hash($password, PASSWORD_DEFAULT, $salt);

SHA1:

$result = sha1($salt.$string);

【问题讨论】:

我投票结束这个问题,因为它是关于分析安全属性并且没有编程问题。 看看***.com/questions/2235158/… 你是对的。这确实涉及安全性。据我所知,这里没有编程。 【参考方案1】:

当您存储大量密码时,Salt 非常有用,否则它们就相当无用,因为它们以明文形式存储。如果攻击者设法获得了您的散列密码,那么假设他们可以得到您的盐。 使用 SHA-256,因为它是一个强大的加密哈希函数,并使用盐。但最重要的是,只需使用强密码和强哈希算法即可。

【讨论】:

【参考方案2】:

你绝对应该使用 password_hash() 函数而不提供你自己的盐:

$hash = password_hash($password, PASSWORD_DEFAULT);

该函数将自行生成一个安全的盐。其他算法的哈希密码速度太快,因此很容易被暴力破解(大约每秒8 Giga MD5)。

【讨论】:

当您需要进行身份验证并且您不知道已生成的盐时怎么办?我要求学习。不改正。 没关系....使用password_verify()函数。将我的 cmets 留给有相同问题的未来用户。

以上是关于什么是更好的? Password_hash vs. SHA256 vs. SHA1 vs. md5的主要内容,如果未能解决你的问题,请参考以下文章

password_hash 给出错误:严格标准:只有变量应该通过引用传递[重复]

vs2017和vs2022哪个更好

python中的dict() vs 哪个更好? [关闭]

php password_hash

从 md5 更改为 password_hash

password_hash加密