0

我很难弄清楚如何做到这一点。
Laravel 使用 PHPcrypt函数。我不确定Ruby中的等价物是什么。
我的密码也用$2a散列散列,如果这有区别的话。

这是 Laravel 的功能

public static function check($value, $hash)
{   
    return crypt($value, $hash) === $hash;
}

我试过 Bcrypt::Password.new 以及 String#crypt 但我似乎无法让它们工作。

数据库中的示例密码$2a$08$WJZWRyljoJGx.qunOGuGLeDaOn/Q3ShEvGxTkx3csWXqWUF21GhBe和真实密码是123456

4

2 回答 2

0

对于那个很抱歉。我只是在发布后才弄清楚它是如何工作的。

解决方案是BCrypt::Password.new('$2a$08$WJZWRyljoJGx.qunOGuGLeDaOn/Q3ShEvGxTkx3csWXqWUF21GhBe') == '123456'

于 2013-06-19T19:37:20.663 回答
0

PHP crypt 方法对 bcrypt-hashed 条目使用非标准表示法。你需要纠正这个:

hash = '$2y$10$tKrgxXzN.naFD3r//yX9/O5uJmGRA9lzlcoPgK.F8REX.kx9xOesS'
BCrypt::Password.new(hash.sub(/\A\$2y/, '$2a')) ==  "Test1111!"
# => true

PHP 的加密库中有一个错误,因此 2y 代表固定版本。

于 2016-05-07T17:15:49.317 回答