PHP-如果不是MD5,数据库加密使用什么



好吧,我不知道以前是否有人问过这个问题,但有很多消息来源表示,不建议使用MD5来哈希敏感数据,例如密码。但没有人对他们将使用的其他哈希函数给出任何建议或指示。你所看到的,包括在这个网站上,都是人们的咆哮,第四,这是安全的还是不安全的。

众所周知,维基百科上写着:

1996年,在MD5的设计中发现了一个缺陷。虽然它不是显然是致命的弱点,密码学家开始建议使用其他算法,如SHA-1,后来发现易受攻击。"

有人引用了这句话,告诉你不要使用md5或sha1,但他们不想让其他人知道你应该考虑其他什么替代方案。

当然,我们不要忘记,设计应用程序的方式、存储密钥的位置、谁可以访问什么、使用盐等也非常重要。

当然,验证和验证所有数据,而不是为SQL注入留下任何后门,XSS漏洞是关键。但据我所知,md5可以很容易地被"粗暴地强迫"或"淡化"。我不是一个安全大师,这就是为什么我问,所以我和任何像我这样有经验的人都可以用更简单的术语理解。

这就是我目前正在做的事情,但也许有人可以给我正反两方面的意见:

$hash = hash('sha256', $salt . hash('sha256', $_POST['pass']) );

我希望我的问题没有越界,我知道有很多关于这方面的文章和页面,但我只是没有找到任何答案,我相信其他人也会想知道。

由于PHP 5.5,您可以使用password_hash:

/**
 * In this case, we want to increase the default cost for BCRYPT to 12.
 * Note that we also switched to BCRYPT, which will always be 60 characters.
 */
$options = [
    'cost' => 12,
];
echo password_hash("Stack Overflow", PASSWORD_BCRYPT, $options)."n";

我已经用过好几次了。正如我所说,我的许多朋友使用它也是因为它有一些好的东西,并且有一个很好的解释链接

最新更新