cryptography - 使用 Python 加盐哈希密码(每个新密码使用不同的盐)

标签 cryptography hash salt

据我阅读和研究后的理解,使用盐的目的应该是为每个要存储的密码使用不同的盐。

如果使用相同的盐来存储所有密码,我可以理解如何实现这一点,因为我可以将盐存储到一个常量私有(private)变量中并使用它。但是,事实并非如此。

虽然用新的不同盐存储每个新密码非常有意义,但我如何知道哪个用户的密码与哪个盐相关联?我想到的快速解决方案是将盐与用户的表属性一起存储,可能称为“盐”,但是如果太容易从中找到盐,那么这也会失去从一开始就拥有盐的目的数据库。

任何人都可以对此提出建议吗?

注意:我使用的是 Python 内置库 ( hashlib ) 或 Bycrypt ( CryptacularPasslib )

最佳答案

The quick solution I thought of, was to store the salt along with the user's table property

这正是你所做的。了解盐并不会真正减损它们的好处:

  • 数据库中的相同密码将具有不同的哈希值。
  • 彩虹表不起作用。
  • 尝试匹配您的任何哈希值的暴力攻击都会被减慢。

关于cryptography - 使用 Python 加盐哈希密码(每个新密码使用不同的盐),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065325/

相关文章:

java - 我对加盐和 SHA-512 哈希密码的实现是否正确/安全?

java - Jasypt 加密字符串无法在另一台机器上解密

xml - 您可以使用这种验证许可证的方式吗?

ruby-on-rails - rails : How to sort/re-order an OrderedHash

python - python中的加密哈希和哈希表哈希有什么区别?

java - 散列密码和加盐密码并不总是相同的

python - 密码学:Python 中的加密

c - IDEA/CFB模式解密和损坏的 block

c# - 使用 PBKDF2 加盐和散列

php - 在Smarty模板引擎中执行MD5函数