我正在使用PHP中的盐值sha1创建哈希密码。
我的问题是:在MySQL中,存储结果的适当字符编码、字段类型和长度是什么?
还有什么其他关于密码安全需要考虑的MySQL方面的问题吗? 最后,SHA256或SHA512是否是实用的哈希选择?
SHA-2算法(SHA-256,SHA-512)是可行的选择;但是它们需要更多的存储空间。例如,要存储SHA-256的十六进制数字,您需要一个CHAR(64)字段。关于SHA-1是否“破解”,有一些疑问Schneier进行了讨论和NIST发表了评论。如果这些问题令您担忧,那么最好使用其中一个SHA-2函数。
如果您想增加暴力攻击的成本,您还可以考虑使用像PBKDF2这样的算法来添加一些迭代。有人在这里的评论中发布了一个示例。
对于SHA1哈希值,CHAR(40)是最佳的字段类型和长度。字符编码不太重要,所有字符都在ASCII范围内。为了保持一致性,我会使用与数据库中其余部分相同的字符集。