在MySQL中存储哈希密码

时间:2010-02-23 16:00:34

标签: mysql passwords hash

我在PHP中使用salted sha1创建散列密码。

我的问题是:在MySQL中,什么是正确的字符编码,字段类型&存储结果的长度?

在密码安全方面,还有其他什么需要考虑吗? 最后是SHA256还是SHA512实用的散列选择?

2 个答案:

答案 0 :(得分:12)

SHA-2算法(SHA-256,SHA-512)是有效的选择;但是它们需要更多存储空间例如,要存储SHA-256的十六进制数字,您需要一个CHAR(64)字段。关于SHA-1是否“已损坏”Schneier discussed itNIST commented,存在一些问题。如果那些与您有关,那么使用SHA-2函数之一可能会更好。

如果你想增加蛮力攻击的成本,你也可以考虑使用PBKDF2等算法添加一些迭代。有人发布了一个示例here in the comments

答案 1 :(得分:5)

对于SHA1哈希,CHAR(40)将是最佳字段类型和长度。 字符编码无关紧要,所有字符都在ASCII范围内。为了保持一致性,我会使用与数据库其余部分相同的字符集。