我们处于一种绑定状态,我们需要使用Ruby来针对现有数据库用户授权用户。用户的密码全部使用password_compat PHP库生成。所有哈希密码都以$ 2y开头。
我一直在使用bcrypt-ruby来尝试和验证用户,我还没有找到任何成功。
#This user's password is "password"
irb(main):041:0> g = BCrypt::Password.new("$2y$10$jD.PlMQwFSYSdu4imy8oCOdqKFq/FDlW./x9cMxoUmcLgdvKCDNd6")
=> "$2y$10$jD.PlMQwFSYSdu4imy8oCOdqKFq/FDlW./x9cMxoUmcLgdvKCDNd6"
irb(main):042:0> g == "password"
=> false
irb(main):044:0> g.version
=> "2y"
irb(main):045:0> g.cost
=> 10
irb(main):046:0> g.salt
=> "$2y$10$jD.PlMQwFSYSdu4imy8oCO"
irb(main):047:0> g.hash
=> -219334950017117414
我对bcrypt或加密一般不是很有经验。 bcrypt-ruby可以处理$ 2y吗?我从源头上看了一下,我不认为它可以。这是底层操作系统的故障(我使用的是OS X)?
现在有一个公开的拉请求,包括2y: https://github.com/codahale/bcrypt-ruby/issues/80 – rizidoro