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代表固定版本