【发布时间】:2014-07-09 16:27:37
【问题描述】:
我正在尝试使用 passrord_hash() 和 password_verify()。以下代码完美运行。
$timeTarget = 0.2;
$pass = "";
$cost = 9;
do {
$cost++;
$start = microtime(true);
$pass = password_hash("qwerty", PASSWORD_BCRYPT, ["cost" => $cost]);
$end = microtime(true);
} while (($end - $start) < $timeTarget);
echo "Appropriate Cost Found: " . $cost . "\n";
echo $pass;
$hash = $pass;
if (password_verify('qwerty', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
但是当我将它转换为函数时,它显示无效密码。我回应了函数中的传递值。它显示了正确的价值。但结果就错了。我无法理解代码有什么问题
$str = "qwerty";
$enc = encrypt($str);
verify_string($str, $enc);
function encrypt($pass){
$timeTarget = 0.2;
$cost = 9;
do {
$cost++;
$start = microtime(true);
$pass = password_hash($pass, PASSWORD_BCRYPT, ["cost" => $cost]);
$end = microtime(true);
} while (($end - $start) < $timeTarget);
echo $pass."<br />";
return $pass;
}
function verify_string($str, $enc){
echo $str." : ".$enc."<br />";
if (password_verify($str, $enc)) {
echo 'Password is valid!<br />';
}
else {
echo 'Invalid password.<br />';
}
}
请帮忙
【问题讨论】:
-
你想用这个循环实现什么?
-
我从教程 "docs.php.net/manual/en/function.password-hash.php" 中得到了这段代码,这是为了增加成本并提高哈希安全性
-
@sectus :对不起,我没听懂你。你能解释一下吗?
-
这段代码的目的是获取
Cost。但是您正在尝试将其用作加密功能。
标签: php encryption passwords password-hash