Laravel Bcrypt与我的程序不兼容

时间:2017-02-09 03:45:51

标签: php laravel bcrypt

我目前在网站上使用Laravel 5,使用默认的Auth软件包。

我在使用在线bcrypt转换器检查后,在我的Java程序中得到了一个通用的Bcrypt实现,看起来Laravel的Bcrypt在某种程度上是不同的,因为我的程序与在线bcrypt站点的结果相同,而Laravel产生了不同的结果。

有什么想法吗?

我的Java程序的Bcrypt实现使用了这个,但是在线bcrypt站点产生了相同的结果,所以问题不在于我的程序,而在于Laravel的Bcrypt。 http://www.mindrot.org/projects/jBCrypt/

2 个答案:

答案 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);
}

有关laravel password mechanism

的详细信息

答案 1 :(得分:0)

固定。

显然,Laravel使用Bcrypt的最新前缀修改,而其他人(公共在线bcrypt hasher,我的应用)我们使用了一个有点过时的前缀。

#5 @ http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html

-

实施例

  

旧的全球Bcrypt前缀(在线哈希,我的应用): $ 2a $

-

  

最近官方更新的前缀(Laravel): $ 2y $