【问题标题】:Migrating Laravel Passwords to Ruby将 Laravel 密码迁移到 Ruby
【发布时间】:2013-06-19 19:35:28
【问题描述】:

我无法弄清楚如何执行此操作。
Laravel 使用 PHP crypt 函数。我不确定 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

【问题讨论】:

    标签: php ruby-on-rails bcrypt


    【解决方案1】:

    对此感到抱歉。我只是在发布后才弄清楚它是如何工作的。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-18
        • 1970-01-01
        • 2016-07-09
        • 2013-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多