【发布时间】:2012-02-10 19:32:57
【问题描述】:
import bcrypt
hashedstring = bcrypt.gensalt()
password = bcrypt.hashpw(password,hashedstring)
是否应该每次在数据库表字段中保存哈希字符串以便下次获取哈希字符串时成功登录?
或者我应该在代码中使用静态预生成的散列字符串?
【问题讨论】:
-
为每个密码生成一个新的 salt 并将它们与密码一起存储会更安全。
-
(下面已经向我指出,bcrypt 在输出中包含盐,因此不需要单独存储)
-
查看您最近的问题,并对您正在尝试做的事情有一些想法,我建议您阅读 Django 文档,特别是关于 Authentication 的内容。考虑到您没有时间阅读文档并且它们很复杂,您正在尝试使已经完成的事情变得更加复杂。如果您使用内置的 Django 功能,您已经以非常简单明了的方式实现了您想要的功能。现在你需要处理 bcrypt、salt 生成以及未来的其他问题。
-
@demalexx 阅读这些文档,我看到选项是 MD5、SHA1 和 Crypt - BCrypt 比所有这些选项都具有显着优势,因此根据应用程序,使用它可能是一个更好的主意,但我同意,在大多数情况下,重新发明轮子是没有意义的。
-
@Lattyware BCrypt 支持将包含在即将发布的 1.4 Django 版本中,并且还包含自动算法升级(这在 BCrypt 的情况下很有趣,因为您会希望不时升级工作因子到时间)所以大师可能想在 1.4 发布之前使用 SHA-1。