Php 将Laravel密码迁移到Ruby

Php 将Laravel密码迁移到Ruby,php,ruby-on-rails,bcrypt,Php,Ruby On Rails,Bcrypt,我很难弄清楚怎么做。 Laravel使用PHPcrypt函数。我不确定Ruby中的等价物是什么。 我的密码也会用$2a散列进行散列,如果这有什么区别的话 这是拉威尔的函数 public static function check($value, $hash) { return crypt($value, $hash) === $hash; } 我尝试了Bcrypt::Password.new和String#crypt,但似乎无法让它们正常工作 示例密码$2a$08$WJZWRyl

我很难弄清楚怎么做。
Laravel使用PHP
crypt
函数。我不确定Ruby中的等价物是什么。
我的密码也会用
$2a
散列进行散列,如果这有什么区别的话

这是拉威尔的函数

public static function check($value, $hash)
{   
    return crypt($value, $hash) === $hash;
}
我尝试了Bcrypt::Password.new和String#crypt,但似乎无法让它们正常工作


示例密码
$2a$08$WJZWRyljoJGx.qunOGuGLeDaOn/Q3ShEvGxTkx3csWXqWUF21GhBe
,真实密码是
123456

对此表示抱歉。发帖后我才知道它是怎么工作的


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

PHP加密方法对BCrypt散列项使用非标准符号。您需要更正此问题:

hash = '$2y$10$tKrgxXzN.naFD3r//yX9/O5uJmGRA9lzlcoPgK.F8REX.kx9xOesS'
BCrypt::Password.new(hash.sub(/\A\$2y/, '$2a')) ==  "Test1111!"
# => true
PHP的加密库中有一个bug,所以2y代表固定版本