我刚从这个网站获得一个功能,描述了如何使用哈希生成安全密码。 功能如下:
function hash_password($password, $nonce) {
global $site_key;
return hash_hmac('sha512', $password . $nonce, $site_key);
}
我正在使用此功能,如
$salt = sha1(rand());
$salt = substr($salt, 0, 4);
$site_key="site.com";
$pass=hash_password($pass,$salt);
每次都会生成随机文本。 但是我无法验证数据库中的密码,因为存储了数据库密码,每次都会生成随机文本。
我想知道如何使用此功能
或
还有其他安全方式吗?
由于
答案 0 :(得分:2)
您需要将随机字符串(我假设的$nonce
)存储在数据库中作为数据的一部分,以及生成的哈希值。否则,您根本没有足够的信息来验证密码。
答案 1 :(得分:-2)
将随机生成的字符串与密码一起存储到db上的用户行中,或者对salt进行硬编码,并始终使用相同的盐,而不是每次更改它。
如果你生成一个新的盐,那么每次计算时哈希都会改变(因为它是一个随机值,你无法将它取回...)。
那么,为什么不是一个简单的MD5?
$pass = md5( $pass.$site_key );
$pass = md5( $pass.$site_key );