【问题标题】:Password Hash Approach密码哈希方法
【发布时间】:2018-10-31 05:47:45
【问题描述】:

我需要在用户第一次注册到系统时将散列密码存储在数据库中。标准方法是采用Passwordsalt,附加它们并使用哈希算法,其输出保存在数据库中。

我将使用Cryptographically Secure Pseudo-Random Number Generator(CSPRNG) 来生成salt。使用CSPRNG 生成的盐对于生成salts 非常安全,正如我从源Link 中看到的那样。由于salt 很难预测,因此使用MD5 对最终的String(Password || salt) 进行散列是一个不错的决定还是有更好的选择?

注意:

我正在考虑选择哈希算法的参数:
1) 安全性应该相当不错。
2)散列算法应该足够快,不会妨碍用户体验。

【问题讨论】:

    标签: security encryption hash


    【解决方案1】:

    这已经在互联网上一次又一次地被报道,但我们来了,再一次......

    使用 bcrypt、argon2 或 PBKDF2。使用 CSPRNG 生成盐。用哈希存储盐很好。不要使用 MD5、SHA256 或任何没有有意迭代计数的东西。

    【讨论】:

    • 如果 CSPRNG 生成一个真正随机的字符串,那么攻击者将如何破解该字符串的哈希(密码 || salt)?
    • 使用 bcrypt 进行散列和使用 CSPRNG 生成盐的预期延迟有多少?
    • 好吧,它不会生成真正随机的字符串。因此是伪的。但这无关紧要。这个想法是计算 MD5 散列完全不需要时间。使用上述算法之一进行计算可能需要开发人员喜欢的时间。通常约为 100 毫秒。
    • @Manya 1. 你想要消耗大约 100 毫秒的 CPU 时间,这就是暴力攻击没有吸引力的原因。 2. salt 与散列密码一起记录,还有一个迭代计数,也许还有一个算法指标。
    猜你喜欢
    • 2011-10-10
    • 2012-07-07
    • 1970-01-01
    • 2012-10-09
    • 2023-04-08
    • 2020-09-16
    • 2012-05-24
    • 2015-11-30
    相关资源
    最近更新 更多