【发布时间】:2012-10-25 20:02:54
【问题描述】:
可能重复:
PHP 2-way encryption: I need to store passwords that can be retrieved
最近阅读一些关于在数据库中存储密码的教程,我有点困惑。大多数网站说最好是使用哈希和盐来存储密码,或者将密码分成两部分存储,或者为所有密码添加一个通用密钥。
我看到了几种使用 crypt、sha、sha256、md5 和河豚的方法。
我的问题是,在河豚中使用 crypt 函数是安全的还是有更好/更安全和更有效的密码存储方法?
【问题讨论】:
-
安全的方法是根本不存储密码。正如您所提到的,只需使用像漩涡这样的慢速散列算法存储一个散列。您需要存储实际密码是否有特殊原因?
-
在 S.O 上的线程数不能超过几千个
-
没有什么是安全的,但存储在数据库中的较长随机盐与哈希一起存储,而不是密码,使用 crypt 应该没问题。
-
另外,请记住,这里的每个人都是安全专家(以一种好的方式)。如果您正在运行一个小型网站,则不需要使用企业级安全性。一个简单的哈希 + 盐应该绰绰有余。
-
但如果我的网站最终变成一个大网站,我将无法更改安全类型,因为所有用户哈希都已存储。因此,我想从一个好的散列算法开始开发。