php 5.3.3的密码保护?

时间:2016-02-06 02:24:27

标签: php passwords

我正在为uni工作,我一直在关注指南,只要找到一种方法将注册密码哈希到mysqli数据库上,但看起来大学的myphp仅适用于5.3.3和MySQL 5.1.73

我可以使用什么来散列它而不是使用5.5的password_hash()函数?不要以为那里有一个方便的教程吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

你的最佳答案:

让他们升级到PHP 5.5或更高版本并使用具有高工作因素的password_hash()

将他们指向Thomas Pornin's canonical Security.stackexchange answer to How to securely hash passwords?让他帮助争辩好密码安全。

你的下一个最佳答案:

让他们升级到PHP 5.3.7或更高版本并使用password_hash() compatibility pack

见上文。

你的答案不是很好:

如果您更改了某些选项,可以合理地在当前的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与输入的候选密码一起使用。如果你得到相同的答案,那就是相同的密码。