我正在编写一个脚本,需要保存密码。出于开发目的,我一直在使用该crypt()
功能,因为它简单且可用。现在我已经完成了大部分工作,我想用更好、更一致的东西来替换它。
我的一些担忧是:
- 并非每个系统都支持所有算法
- 有时盐会预先添加到结果中(似乎是一个安全问题)
我想要一些适用于 PHP 4.3+ 的东西。
有什么可用的,还是我应该坚持crypt()
?我考虑过使用md5(md5($password).$salt)
. 感谢您的洞察力。
没有错crypt
如果您的服务器不支持,请使用另一台服务器。
你不应该使用MD5来散列密码(或者甚至是 SHA1)
使用 bcrypt(的河豚方法crypt
)或 pbkdf2
这里有一个 pbkdf2 的实现: Encrypting Passwords with PHP for Storage Using the RSA PBKDF2 Standard
有关原因和方式的更多信息:
首先:预先添加盐不是安全问题。拥有每个密码的盐是一个很大的好处,将它与密码一起存储是完全可以的。
现在:只要您不将密码哈希从一个系统传输到另一个系统,并且后者不支持第一个系统的默认算法,根据定义不会发生任何坏事。自 PHP 5.3 起,PHP 中有内置算法,例如 Blowfish,保证可用。