网站如何知道您尝试登录时要使用的盐

问题描述 投票:0回答:1

例如,假设我的密码是“ foo”,并且网站在密码上使用了md5哈希,并在其上附加了唯一的盐。

因此,当我注册时,我的密码将存储为“ foo”并附加一个盐,然后对md5进行哈希处理。

然后,当我发送登录请求时,网站会将盐添加到“ foo”,然后md5对其进行哈希处理,但是网站如何知道正确使用的唯一盐是什么?

网站魔术如何知道正确的唯一盐附加到我的密码上,然后对它进行md5哈希加密,以验证密码我输入的等于md5哈希哈希密码)数据库?

hash salt
1个回答
0
投票

这是处理密码的通常过程:

  1. 用户使用密码注册。
  2. 为其用户标识创建了新的数据记录(可以以用户名或电子邮件等形式出现)
  3. 他们的密码已处理:
    1. 为它们生成了盐,该盐被保存在数据记录中。这很常见,建议您在密码哈希旁边看到盐。
    2. 密码与salt结合使用(通常,库也可以为您完成此步骤,因为像添加salt这样的细微差别在安全性上起着至关重要的作用。
    3. 使用设计用于密码哈希的功能对密码进行哈希。通常,这样做会使挫败暴力破解的尝试在计算上非常昂贵。
    4. 密码哈希存储在数据记录中,原始密码被丢弃。

然后他们登录时,这里没有魔术:

  1. 使用他们的用户ID查找数据记录。
  2. 他们提供的密码与数据记录中的盐组合在一起,然后进行哈希处理。
  3. 如果它与存储的哈希匹配,则授予他们访问权限。

一些注意事项:

  • 密码散列非常昂贵。我认为它花费不超过1整秒的计算时间并不少见。想象一下,如果有成千上万的用户同时登录,处理负担将会很大。
  • 如果您没有使用像样的库来处理密码哈希,很多事情都会出错。不建议自己编写任何步骤。
  • 对于库来说,通常会输出一个编码字符串,其中包含需要通过密码进行验证的所有内容,例如版本代码,哈希和所用的盐。
© www.soinside.com 2019 - 2024. All rights reserved.