【发布时间】:2021-04-15 07:16:33
【问题描述】:
当用户注册时,我正在为 PHP 中的用户生成令牌。我想知道两个用户是否可以获得相同的令牌......因为这会破坏系统。请让我知道这是否足够。
$token = md5(rand().time());
编辑:我现在正在使用我在另一个问题上找到的 generate_uuid() 函数。 这行得通吗?
function generate_uuid() {
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
mt_rand( 0, 0xffff ),
mt_rand( 0, 0x0C2f ) | 0x4000,
mt_rand( 0, 0x3fff ) | 0x8000,
mt_rand( 0, 0x2Aff ), mt_rand( 0, 0xffD3 ), mt_rand( 0, 0xff4B )
);
}
【问题讨论】:
-
当然会。
md5冲突是微不足道的,这就是为什么它是维基百科关于 md5 散列在 en.wikipedia.org/wiki/MD5#Collision_vulnerabilities 上的文章的一部分。祝你好运。但作为一条建议:使用 uid/uuid 库。这就是他们的目的=) -
为什么不使用a UUID?
-
我编辑了这篇文章。你们可以检查一下并确定它是否每次都是独一无二的吗??
标签: php performance random time