为新用户验证其帐户创建哈希(作为验证ID)的最佳算法是什么?
MD5似乎是我看到的所有答案,但所有来源至少有3或4年的历史。我只是想确保MD5今天仍然是最好的选择...
我使用password_hash()
函数来识别我认为使用Blowfish算法并添加随机盐的密码,但这是验证ID所必需的吗?
答案 0 :(得分:1)
MD5可以生成哈希值,如果你只想创建验证令牌,可以使用以下内容:
$token = md5(uniqid(mt_rand(), true));
除非您使用盐,否则不要将MD5用于密码,即使这样,您也应该使用更强大的bcrypt算法。
答案 1 :(得分:1)
为此,MD5只是一种“编码”。只要运行MD5的源值是正确随机的,就可以安全地使用它。
任何随机(使用适当的算法)128位值将执行文件(GUID(只要它是v4)或只是base64编码的加密随机字节数组,或同一阵列上的MD5)
你必须确保无法猜到。所以大多数情况下你想要通过IP地址添加某种无效令牌计数器,这会在一定次数后阻止访问。
此外,您可能希望为相同的原因添加某种过期(例如24小时有效)。