什么是用于通过电子邮件进行帐户验证的优秀PHP哈希算法?

时间:2014-05-07 14:55:36

标签: php security

为新用户验证其帐户创建哈希(作为验证ID)的最佳算法是什么?

MD5似乎是我看到的所有答案,但所有来源至少有3或4年的历史。我只是想确保MD5今天仍然是最好的选择...

我使用password_hash()函数来识别我认为使用Blowfish算法并添加随机盐的密码,但这是验证ID所必需的吗?

2 个答案:

答案 0 :(得分:1)

MD5可以生成哈希值,如果你只想创建验证令牌,可以使用以下内容:

$token = md5(uniqid(mt_rand(), true));

除非您使用盐,否则不要将MD5用于密码,即使这样,您也应该使用更强大的bcrypt算法。

另见Generating cryptographically secure tokens

答案 1 :(得分:1)

为此,MD5只是一种“编码”。只要运行MD5的源值是正确随机的,就可以安全地使用它。

任何随机(使用适当的算法)128位值将执行文件(GUID(只要它是v4)或只是base64编码的加密随机字节数组,或同一阵列上的MD5)

你必须确保无法猜到。所以大多数情况下你想要通过IP地址添加某种无效令牌计数器,这会在一定次数后阻止访问。

此外,您可能希望为相同的原因添加某种过期(例如24小时有效)。