我正在将用户表从laravel应用程序迁移到ruby SSO服务器,我正在使用BCrypt验证ruby中的密码。
我面临的问题是密码不匹配,因为laravel生成的哈希以$2y$10.....
开头,而我的BCrypt生成哈希$2a$10....
两个哈希值之间的版本不匹配。
Ruby BCrypt显示版本2a
,而不是laravel 2y
我怎样才能将它们带到同一个版本上,以便我可以像这样在ruby中进行用户身份验证?
BCrypt::Password.new(user.send(password_column.to_sym)) == @password
这应该返回true,而是返回false。
BCrypt::Password.new('$2y$10$tKrgxXzN.naFD3r//yX9/O5uJmGRA9lzlcoPgK.F8REX.kx9xOesS') == "Test1111!"
答案 0 :(得分:4)
PHP l3
方法对bcrypt-hashed条目使用非标准表示法。你需要纠正这个:
crypt
PHP的加密库中存在一个错误,因此hash = '$2y$10$tKrgxXzN.naFD3r//yX9/O5uJmGRA9lzlcoPgK.F8REX.kx9xOesS'
BCrypt::Password.new(hash.sub(/\A\$2y/, '$2a')) == "Test1111!"
# => true
代表固定版本。