Zend\Crypt\Password\BCrypt 验证方法
Zend\Crypt\Password\BCrypt verify method
我正在使用 Zend\Crypt\Password\Bcrypt
for storing passwords encrypted in the database. But now I looked a bit closer and I don't seem to understand the verify method of this class:
/**
* Verify if a password is correct against a hash value
*
* @param string $password
* @param string $hash
* @throws Exception\RuntimeException when the hash is unable to be processed
* @return bool
*/
public function verify($password, $hash)
{
$result = crypt($password, $hash);
return Utils::compareStrings($hash, $result);
}
功能根据评论"Verify if a password is correct against a hash value"
但是当我检查 the php crypt function 时,它调用第二个参数是一个可选的 $salt
而不是要验证的 $hash
字符串。
我是怎么读这个的:它首先使用传递的 $hash
作为盐来加密我们要检查的 $password
然后它比较相同的 $hash
它用作salt 与加密 $result
!?
那么我在这里缺少什么? php-doc 不正确,或者我不明白发生了什么,或者我遗漏了文档中的某些内容。
Bcrypt 散列具有详细记录的结构,例如这个散列:
y$aPk2mEEIkGonq6/JGr0OKOhYOdgomu61ARBjDLgb0UmHM4L8f7Hxe
字符串 y$
是前缀,10
是成本,aPk2mEEIkGonq6/JGr0OKO
是盐(128 位,base64 编码的 22 个字符),hYOdgomu61ARBjDLgb0UmHM4L8f7Hxe
是结果哈希。
crypt
函数识别这种格式并使用它的适当部分作为盐,因此将整个散列作为第二个参数传递没有问题。
我正在使用 Zend\Crypt\Password\Bcrypt
for storing passwords encrypted in the database. But now I looked a bit closer and I don't seem to understand the verify method of this class:
/**
* Verify if a password is correct against a hash value
*
* @param string $password
* @param string $hash
* @throws Exception\RuntimeException when the hash is unable to be processed
* @return bool
*/
public function verify($password, $hash)
{
$result = crypt($password, $hash);
return Utils::compareStrings($hash, $result);
}
功能根据评论"Verify if a password is correct against a hash value"
但是当我检查 the php crypt function 时,它调用第二个参数是一个可选的 $salt
而不是要验证的 $hash
字符串。
我是怎么读这个的:它首先使用传递的 $hash
作为盐来加密我们要检查的 $password
然后它比较相同的 $hash
它用作salt 与加密 $result
!?
那么我在这里缺少什么? php-doc 不正确,或者我不明白发生了什么,或者我遗漏了文档中的某些内容。
Bcrypt 散列具有详细记录的结构,例如这个散列:
y$aPk2mEEIkGonq6/JGr0OKOhYOdgomu61ARBjDLgb0UmHM4L8f7Hxe
字符串 y$
是前缀,10
是成本,aPk2mEEIkGonq6/JGr0OKO
是盐(128 位,base64 编码的 22 个字符),hYOdgomu61ARBjDLgb0UmHM4L8f7Hxe
是结果哈希。
crypt
函数识别这种格式并使用它的适当部分作为盐,因此将整个散列作为第二个参数传递没有问题。