像大多数用户一样,我只是试图找出一种安全的密码存储方式。在这里我没有找到(或者可能是因为我理解不够)如何从数据库中检索含有独特盐值的哈希值,并将其与散列密码分离的方法,尤其是当每个密码都有唯一盐值而同时需要将盐值和密码存储在一个单独的列中。
我发现了许多加密密码的好方法(如SHA-256),但是不确定如何存储和检索密码,尤其是在PHP手册中找不到相关信息。
到目前为止,这是我所理解的:
SHA('$salt'.'$password') // My query sends the password and salt
// (Should the $salt be a hash itself?)
在那之后,我对盐一无所知。
没有盐的情况下检索密码很容易,但是盐困扰着我。我从哪里获取 $salt 的值,尤其是如果它是唯一且安全的?我需要将它们隐藏在另一个数据库中吗?常数(似乎不安全)?
编辑:HMAC 中的关键变量应该是 salt 还是其他什么东西?
SHA2()
函数,提供SHA224、SHA256、SHA384和SHA512哈希算法。如果您使用的是早期版本的MySQL,请在PHP中使用hash()
函数。 - Bill Karwin