【发布时间】:2014-08-21 20:07:55
【问题描述】:
PHP crypt() 函数的手册 (http://php.net/manual/en/function.crypt.php) 中说明它...
返回散列字符串或小于 13 的字符串 字符,并保证与失败时的盐不同。
但是,以下示例中,我以错误的方式在 crypt() 的前缀中使用了 rounds 参数,这表明该函数也可能在失败时返回 13 个字符的哈希值。那么在失败时手动声明字符串等于或短于 13 个字符,或者我没有得到什么?
$password_to_encode = "foo";
$iv = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$error_hash = crypt($password_to_encode, 'rounds=10000$6$'.$iv);
echo 'Error hash: '.$error_hash.', length: '.strlen($error_hash)."<br>";
$correct_hash = crypt($password_to_encode, '$6$rounds=10000$'.$iv);
echo 'Correct hash: '.$correct_hash.', length: '.strlen($correct_hash)."<br>";
输出:
Error hash: rod2rRfdXBWy6, length: 13
Correct hash: $6$rounds=10000$¦yû*®gص=ºåé...NFk.5mrB07OM//, length: 119
(正确的哈希已被缩写)
【问题讨论】:
-
我想知道为什么这是相关的,你打算使用错误哈希吗?
-
这与我有关,因为 1. 我喜欢了解函数的完整行为以获取整体观点。 2. 如果你使用
标签: php return-value crypt