Мы немного привязаны, когда нам нужно использовать Ruby для пользователей с существующими db пользователей. Полные пароли пользователя были сгенерированы с использованием библиотеки PHP password_compat. Все хешированные пароли начинаются с $ 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