我从互联网上为bcrypt采取了以下功能。它输出一个加密的密码,这正是我要找的。我还使用了盐来执行检查的功能,但是这个功能不能为我提供盐。
function bcrypt_hash($password, $work_factor = 8)
{
if (version_compare(PHP_VERSION, '5.3') < 0) throw new Exception('Bcrypt requires PHP 5.3 or above');
if (! function_exists('openssl_random_pseudo_bytes')) {
throw new Exception('Bcrypt requires openssl PHP extension');
}
if ($work_factor < 4 || $work_factor > 31) $work_factor = 8;
$salt =
'$2a$' . str_pad($work_factor, 2, '0', STR_PAD_LEFT) . '$' .
substr(
strtr(base64_encode(openssl_random_pseudo_bytes(16)), '+', '.'),
0, 22
)
;
return crypt($password, $salt);
}
我需要分别返回密码和盐。或者有没有办法将它们分别从这个功能中拉出来。
答案 0 :(得分:2)
您不能从函数返回多个值,但是您可以返回包含多个值的单个数据结构:
return array('crypt' => crypt($password, $salt), 'salt' => $salt);