Php 拉雷维尔·柏克莱普特是';与我的程序不兼容

Php 拉雷维尔·柏克莱普特是';与我的程序不兼容,php,laravel,bcrypt,Php,Laravel,Bcrypt,我目前正在网站上使用Laravel5,使用默认的Auth包 在使用在线Bcrypt转换器进行检查后,我在Java程序上得到了一个通用的Bcrypt实现,似乎Laravel的Bcrypt在某种程度上有所不同,因为我的程序与在线Bcrypt站点达到了相同的结果,而Laravel产生了不同的结果 知道怎么回事吗 我的Java程序的Bcrypt实现使用了这一点,但是在线Bcrypt站点会产生相同的结果,因此问题不在于我的程序,而在于Laravel的Bcrypt。 Laravel bcrypt()只是ph

我目前正在网站上使用Laravel5,使用默认的Auth包

在使用在线Bcrypt转换器进行检查后,我在Java程序上得到了一个通用的Bcrypt实现,似乎Laravel的Bcrypt在某种程度上有所不同,因为我的程序与在线Bcrypt站点达到了相同的结果,而Laravel产生了不同的结果

知道怎么回事吗

我的Java程序的Bcrypt实现使用了这一点,但是在线Bcrypt站点会产生相同的结果,因此问题不在于我的程序,而在于Laravel的Bcrypt。 Laravel bcrypt()只是php函数的包装器

照亮/Foundation/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;
}
public function check($value, $hashedValue, array $options = [])
{
    if (strlen($hashedValue) === 0) {
        return false;
    }

    return password_verify($value, $hashedValue);
}
在通过哈希生成密码后,laravel使用函数匹配密码

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;
}
public function check($value, $hashedValue, array $options = [])
{
    if (strlen($hashedValue) === 0) {
        return false;
    }

    return password_verify($value, $hashedValue);
}
有关

修复的详细信息

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

#5@

-

示例 旧的全局Bcrypt前缀(在线哈希器,我的应用程序):$2a$

-

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


您在Java程序中使用了多少个日志循环?@Saumini我使用的工作因子是10,恐怕这也是Laravel中的默认因子。