巫术如何准确验证用户身份?什么是盐?如何更改法术默认列名?
create_table "users", force: :cascade do |t|
t.string "email", null: false
t.string "crypted_password"
t.string "salt"
t.datetime "created_at"
t.datetime "updated_at"
end
答案 0 :(得分:1)
在标准加密中,使用“ 盐”来确保密码散列更加安全。在Sorcery中,它是通过将随机字符串连接到密码末尾并在salt字段中记住该字符串来实现的。
因此,在加密新密码时,伪代码为:
hashing_algorithm('passed in password' + salt) => crypted_password
并且在进行身份验证时,比较是(魔术实际上会覆盖“匹配项?”):
crypted_password == hashing_algorithm('passed in password' + salt)
那样,即使多个用户使用了相同的密码,从数据中也不是很明显,因为每次都会生成不同的哈希。