【发布时间】:2012-02-23 20:28:03
【问题描述】:
我正在创建一个网站,我正在尝试决定如何加密用户密码以将其存储在 SQL 数据库中。
我意识到使用简单的 md5(密码)是非常不安全的。我正在考虑使用 sha512(password.salt),并且我一直在研究生成有用盐的最佳方法。 我阅读了许多文章,指出盐应该尽可能随机以将熵添加到哈希中,这看起来是个好主意。但是:
- 您需要将随机盐与哈希一起存储
- 鉴于攻击者以某种方式访问了您的哈希密码(并试图将哈希反转为纯文本),这意味着他可能转储了您的数据库,然后还访问了您的随机盐
数据库中哈希值旁边看起来很奇怪的值是盐,这不是很明显吗?如果攻击者可以访问盐以及哈希值,那如何更安全?
有人在这方面有专长吗?谢谢!
【问题讨论】:
-
别忘了,在这一切之后,你仍然需要好的密码。
-
@PeeHaa:攻击者不需要为每个盐值创建一个彩虹表吗?
-
盐可以防止彩虹表攻击。现在攻击者必须为每个盐创建一个彩虹表,而不是只为所有记录创建一个。
-
要小心,即使使用盐,您也容易受到暴力攻击(尤其是在廉价云超级计算机可用的情况下)。如果你想做到这一点,最好的选择是use a library。
-
"我意识到使用简单的 md5(password) 非常不安全。我正在考虑使用 sha512(password.salt)" 我们将 md5 与 wowza 一起使用,这还不够好吗?
标签: php mysql security hash sha