gpt4 book ai didi

security - 如何*正确*存储密码?

转载 作者:行者123 更新时间:2023-12-02 12:09:45 24 4
gpt4 key购买 nike

article我在这里偶然发现的 SO 提供了指向 other articles 的链接反过来又提供了 even more 的链接articles等等

最后我完全被难住了 - 那么在数据库中存储密码的最佳方法是什么?据我所知,你应该:

  • 使用长盐(至少 128 个完全随机位),以明文形式存储在密码旁边;
  • 对加盐密码使用 SHA-256 的多次迭代(甚至更高的 SHA 级别)。

但是......我对密码学了解得越多,我就越明白我并没有真正理解任何东西,而且我多年来认为正确的事情实际上是完全错误的。这里有这方面的专家吗?

补充:似乎有些人没有捕获重点。我重复上面给出的最后一个链接。这应该可以澄清我的担忧。

https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2007/july/enough-with-the-rainbow-tables-what-you-need-to-know-about-secure-password-schemes/

最佳答案

你说得对。只有两个建议:

  1. 如果有一天 SHA1 变得太弱并且您想使用其他密码,则不可能对旧密码进行散列处理并使用新方案重新散列它们。出于这个原因,我建议为每个密码附加一个“版本”号,告诉您使用的方案(盐长度、哈希值、次数)。如果有一天您需要从 SHA 切换到更强大的密码,您可以创建新式密码,同时数据库中仍保留旧式密码,并且仍然可以区分它们。将用户迁移到新方案将会更加容易。

  2. 密码仍会在不加密的情况下从用户传输到系统。看SRP如果这是一个问题。 SRP 太新了,您应该对实现它有点偏执,但到目前为止它看起来很有希望。

编辑:事实证明 bcrypt 在想法 1 上击败了我。存储的信息是(成本、盐、哈希),其中成本是哈希已完成的次数。看起来 bcrypt 做了正确的事情。无需用户干预即可增加散列次数。

关于security - 如何*正确*存储密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com