比较bcrypt哈希值

时间:2012-07-11 07:31:20

标签: ruby

由于某种原因,身份验证失败。但是,如果我将哈希打印到stdout,它是完全相同的。任何人都有任何想法是什么问题?

if File.exists?(passwdFile)  
    File.open("#{passwdFile}",'r').each do |account|
      @account = account.split(':')
      usernameCheck = @account[0] # Stored username
      passwordCheck = @account[1] # Stored hashed password
      if username == usernameCheck
        # Create hash for given password to compare againts our stored one.
        password_hash = BCrypt::Engine.hash_secret(password, password_salt)
        puts "#{password_hash}"
        puts "#{passwordCheck}"
        if passwordCheck == password_hash
          @log.info 'Successfull authentication'
          return true

密码文件如下所示:

bob:$2a$10$1xNjCZxjv0R06qUm1lQEEeZ1uKuZ9ELQIkT2h5/TxCI9eHDurr.dW

1 个答案:

答案 0 :(得分:1)

File#each返回的行包含行尾的换行符,因此您的passwordCheck变量有一个尾随换行符,但bcrypt生成的散列不会。

您可以使用chomp

删除换行符