【发布时间】:2010-07-18 12:03:41
【问题描述】:
像大多数用户一样,我只是想找出一种安全的方式来存储密码。我在这里没有找到(或者可能是我缺乏理解)是如何在我的数据库中检索加盐哈希并将盐与散列密码分开,尤其是每个密码都有唯一的盐,而将盐+密码保存在单个列中。
我正在寻找所有这些很酷的方法来加密密码(SHA-256,但 MySQL 是否只支持 SHA/1 和 MD5?)以及 PHP 手册中的其他内容,但不确定如何存储和检索密码。
所以,到目前为止,我所了解的就这些了:
SHA('$salt'.'$password') // My query sends the password and salt
// (Should the $salt be a hash itself?)
在那之后我迷失了盐分。
没有盐的情况下检索密码很容易,但是盐让我很困惑。我在哪里可以再次从 $salt 获得价值,特别是如果它是唯一且安全的?我是否将它们隐藏在另一个数据库中?常量(似乎不安全)?
编辑: HMAC 中的关键变量应该是盐还是其他?
【问题讨论】:
-
FWIW,使用 SSL 支持构建的 MySQL 5.5 包括一个提供 SHA224、SHA256、SHA384 和 SHA512 哈希算法的
SHA2()函数。如果您使用的是早期版本的 MySQL,请使用 PHP 中的hash()函数。 -
再次感谢您,Bill,这是您第二次提供帮助!我使用的是 5.1,因为它带有 WAMP (wampserver.com)。我必须卸载我的旧 MySQL 才能安装这个。不幸的是,我不确定如何更新它......我将尝试使用 PHP 进行加密。