魔法宝石中使用什么盐?

时间:2018-09-20 07:31:03

标签: ruby-on-rails ruby encryption sorcery

巫术如何准确验证用户身份?什么是盐?如何更改法术默认列名?

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

1 个答案:

答案 0 :(得分:1)

在标准加密中,使用“ ”来确保密码散列更加安全。在Sorcery中,它是通过将随机字符串连接到密码末尾并在salt字段中记住该字符串来实现的。

因此,在加密新密码时,伪代码为:

hashing_algorithm('passed in password' + salt) => crypted_password

并且在进行身份验证时,比较是(魔术实际上会覆盖“匹配项?”):

crypted_password == hashing_algorithm('passed in password' + salt)

那样,即使多个用户使用了相同的密码,从数据中也不是很明显,因为每次都会生成不同的哈希。