【问题标题】:Store one big Hash instead of User/Pass in DB在数据库中存储一个大哈希而不是用户/密码
【发布时间】:2016-02-07 02:04:47
【问题描述】:

通常,密码以单向算法存储,因此很难从中发现纯文本。 但我一直在想:如果我将用户名和密码融合在一起的 SHA512 存储(A+B=SHA512),而不是分别存储用户名和密码哈希值会怎样。 这种方法安全吗?

编辑:在我看来,用户名'salt'密码,所以不会有两次相等的哈希......

【问题讨论】:

  • 使用用户名作为盐不是一个好主意,请参阅here

标签: sql database security hash


【解决方案1】:

(1) 您应该使用 bcrypt、scrypt 或 pbkdf2 之类的东西,而不是 SHAwhatever 之类的东西来处理密码。谷歌这个。

(2) 您将如何处理忘记密码的情况?

(3) 查看我的博客,特别是“一个简单的例子:保护电子邮件地址”部分:https://littlemaninmyhead.wordpress.com/2015/09/08/a-retrospective-on-ashely-madison-and-the-value-of-threat-modeling/

【讨论】:

  • 忘记的密码不应以纯文本形式恢复。
  • @Fusselldieb,我可以建议您再次阅读该博客,因为您显然没有得到它。博客中的忘记密码功能是关于“密码重置”,而不是关于找回密码,这在此设计中是不可能的。
【解决方案2】:

当然可以。但是您是否想要检索用户名列表?

在我编写的身份验证实现中,我使用用户名作为盐的一部分。再加上站点范围的盐和一些恒定盐,最终每个用户名会产生大约 120 位盐。

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 2012-11-25
    • 2019-03-17
    • 1970-01-01
    • 2011-06-10
    • 2012-04-03
    • 2015-10-07
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多