Digest :: SHA1 :: hexdigest为相同的字符串生成不同的哈希值

时间:2012-06-19 17:48:53

标签: ruby-on-rails string encryption sha1

我正在尝试进行简单的用户身份验证,但会话控制器中对Digest::SHA1::hexdigest的调用产生的哈希值与用户模型中的哈希值不同。

user.rb:

    class User < ActiveRecord::Base

    before_save {|user| user.password = Digest::SHA1.hexdigest(user.password)}
    ...

    end

sessions_controller.rb

    def create
        user = User.where(:username => params[:username], :password => Digest::SHA1.hexdigest(params[:password])).first
    end

有什么方法可以解决这个问题吗?

例如,当我尝试登录时,字符串“password”显示为“5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8”。

但是,在数据库中,相同的字符串“password”显示为: “353e8061f2befecb6818ba0c034c632fb0bcae1b”

1 个答案:

答案 0 :(得分:3)

before_save会在您保存的任何时候运行,因此请创建加密,然后再对您正在加密的任何更新(已加密的更新)进行加密。尝试使用before_create。

相关问题