【问题标题】:Unique hash-values across 2 different sql-tables跨 2 个不同 sql 表的唯一哈希值
【发布时间】:2017-07-29 01:45:15
【问题描述】:

我想存储一个带有随机盐的散列密码。哈希值应该在两个不同的 sql 表中是唯一的

salt 由随机字符和数字组成,密码和登录名中不允许使用斜线。

为了确保唯一性,我想附加一个分隔符和唯一的登录名。

示例(伪代码):

 hash(salt + password + “/” + login)    

这个想法是避免在两个不同的表中搜索唯一的随机盐。

如果我以这种方式构建存储的哈希值会不会更不安全?

【问题讨论】:

  • 仅使用散列函数是不够的,仅添加盐对提高安全性无济于事。相反,iIterate over an HMAC with a random salt for about 100ms duration and save the salt with the hash.使用PBKDF2Rfc2898DeriveBytespassword_hashBcrypt等函数和类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。

标签: sql database security hash passwords


【解决方案1】:

在我看来,您没有使用正确类型的“散列”函数来“散列”您的密码,因为如果是,那么您就不需要问这个问题了。

SHA 系列等普通散列函数不适用于保护密码。问题是它们的计算速度太快,这意味着密码可能会被暴力破解。欲了解更多信息,请阅读this

你应该使用像bcrypt这样的函数(或者如果它不可用,至少使用pbkdf2),它将盐和密码作为单独的参数作为输入,并输出你的“哈希”存储在您的数据库中。

对于 "hash" 一词的混淆使用,我代表加密和安全社区道歉。不幸的是,它看起来不会很快得到修复。

【讨论】:

猜你喜欢
  • 2011-02-15
  • 2019-05-31
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多