据我阅读和研究后的理解,使用盐的目的应该是为每个要存储的密码使用不同的盐。
如果使用相同的盐来存储所有密码,我可以理解如何实现这一点,因为我可以将盐存储到一个常量私有(private)变量中并使用它。但是,事实并非如此。
虽然用新的不同盐存储每个新密码非常有意义,但我如何知道哪个用户的密码与哪个盐相关联?我想到的快速解决方案是将盐与用户的表属性一起存储,可能称为“盐”,但是如果太容易从中找到盐,那么这也会失去从一开始就拥有盐的目的数据库。
任何人都可以对此提出建议吗?
注意:我使用的是 Python 内置库 ( hashlib ) 或 Bycrypt ( Cryptacular 或 Passlib )
最佳答案
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/