我正在为 uni 做一项作业,我一直在遵循指南,以找到一种将注册密码散列到 mysqli 数据库的方法,但似乎大学的 myphp 仅在 5.3.3 和 MySQL 5.1.73 上。
我可以使用什么来散列它而不是使用 5.5 的 password_hash(( 函数?不要以为那里有一个方便的教程吗?
非常感谢!
您的最佳答案:
让他们升级到 PHP 5.5 或更高版本,并使用具有高工作系数的 password_hash((。
将他们指向Thomas Pornin的规范Security.stackexchange对如何安全地散列密码的回答,让他帮助争论良好的密码安全性。
您的下一个最佳答案:
让他们升级到 PHP 5.3.7 或更高版本并使用 password_hash(( 兼容包
见上文。
你不太好的答案:
如果您更改某些选项,则可以在当前的PHP 5.3.3版本上合理地使用crypt:
crypt('password', '$6$rounds=150000$PerUserCryptoRandomSalt$')
6 美元 - 使用 SHA-512,它具有 64 位操作,可降低大多数基于 GPU 的攻击者在 2016 年初对您的优势。
$rounds=150000 - 将迭代次数设置为数十万或高数万轮。
PerUserCryptoRandomSalt - 与password_hash不同,你必须自己做这件事。 您需要生成一个 12-24 个二进制字节的唯一加密随机盐(16 是非常合理的(
请注意,它是明文格式的结果字符串的一部分,这是正确的。
那是二进制字节! 如果你转换为十六进制,crypt(( 函数中的大小会加倍,如果你 Base64 它,它会增加 4/3rds
为了进行比较,您可以获得用户的盐和轮数,并使用crypt与输入的候选密码上的密码一起使用。 如果您得到相同的答案,则使用相同的密码。