假设我们有一个在数据库中存储的盐,生成方式如下:
他们输出的结果不同。第一个函数
$salt = time();
$pass1 = hash('sha1', $password . $salt);
$pass2 = hash_hmac('sha1', $password, $salt);
他们输出的结果不同。第一个函数
hash
需要2个参数,而hash_hmac
需要3个参数。因此,你可能认为我们可以通过单独使用$salt
(来满足第三个参数),而不是像第2行那样将其与密码拼接在一起($password . $salt
)来获得第三个额外的参数。但事实并不简单,这两个结果是不同的。为什么?到底发生了什么?
hash_hmac('sha1', $pass, "standard");
,而不需要任何随机盐呢? - Chris