为PHP密码提供安全散列和盐分
目前说MD5是部分不安全的。 考虑到这一点,我想知道使用哪种机制来保护密码。
这个问题,“双重散列”密码不仅仅是一次散列吗? 建议多次散列可能是一个好主意,而如何实现单个文件的密码保护? 建议使用盐。
我使用PHP。 我想要一个安全快速的密码加密系统。 散列密码一百万次可能更安全,但速度也更慢。 如何在速度和安全之间取得良好的平衡? 此外,我更喜欢结果有一个恒定数量的字符。
另外,我应该在数据库中存储两个字段(例如,使用MD5和使用SHA的另一个字段)? 它会使它更安全还是不安全?
如果我不够清楚,我想知道使用哪个哈希函数以及如何选择一个好的盐,以便拥有一个安全快速的密码保护机制。
不完全覆盖我的问题的相关问题:
PHP和SHA中的MD5有什么区别
简单的密码加密
存储密钥的安全方法,用于asp.net的密码
你将如何在Tomcat 5.5中实现咸味密码
免责声明 :这个答案是在2008年写的。
从那以后,PHP给了我们password_hash
和password_verify
,自推出以来,他们是推荐的密码散列和检查方法。
尽管答案的理论仍然是一个很好的解读。
TL; DR
注意事项