我目前在网站上使用Laravel 5,使用默认的Auth软件包。
我在使用在线bcrypt转换器检查后,在我的Java程序中得到了一个通用的Bcrypt实现,看起来Laravel的Bcrypt在某种程度上是不同的,因为我的程序与在线bcrypt站点的结果相同,而Laravel产生了不同的结果。
有什么想法吗?
我的Java程序的Bcrypt实现使用了这个,但是在线bcrypt站点产生了相同的结果,所以问题不在于我的程序,而在于Laravel的Bcrypt。 http://www.mindrot.org/projects/jBCrypt/
答案 0 :(得分:0)
Laravel bcrypt()只是php的password_hash函数的包装。
<强>照亮/粉底/ helpers.php 强>
function bcrypt($value, $options = [])
{
return app('hash')->make($value, $options);
}
<强> BcryptHasher 强>
public function make($value, array $options = [])
{
$cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;
$hash = password_hash($value, PASSWORD_BCRYPT, ['cost' => $cost]);
if ($hash === false) {
throw new RuntimeException('Bcrypt hashing not supported.');
}
return $hash;
}
在通过哈希生成密码后,laravel使用password_verify函数
匹配密码<强> BcryptHasher 强>
public function check($value, $hashedValue, array $options = [])
{
if (strlen($hashedValue) === 0) {
return false;
}
return password_verify($value, $hashedValue);
}
的详细信息
答案 1 :(得分:0)
固定。
显然,Laravel使用Bcrypt的最新前缀修改,而其他人(公共在线bcrypt hasher,我的应用)我们使用了一个有点过时的前缀。
#5 @ http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html
-
旧的全球Bcrypt前缀(在线哈希,我的应用): $ 2a $
-
最近官方更新的前缀(Laravel): $ 2y $