我在这里搜索,但我发现我的问题一无所获。所以,我在这里发布这个类似初学者的问题。 random_bytes()
可以是唯一的吗?它是防撞吗?或至少百分比的碰撞?谢谢你们。
答案 0 :(得分:3)
根据manual:
生成适用于加密用途的任意长度的加密随机字节字符串
因此,您可以假设唯一性,当然取决于生成的字符串的长度。如果您需要生成ID,那么请查看UUIDv4,并遵循其生成算法,那么您应该是最安全的。
答案 1 :(得分:0)
随机,它不保证独一无二! 基本问题: 独特的文字,可能是多少人的独特之处?
例如:
1-9范围内的数字,独特地分配给9个人。但对于第十个人来说,这不是一个独特的数字。
您必须编写自己的唯一字节函数。如果可以使用md5()和uniqid()函数,则可以生成唯一的32个字符长度的十六进制密钥。
例如:
$uid = md5(uniqid(mt_rand(), true));
如果您需要更长的唯一键,可以使用mcrypt_encrypt()函数。有时,您使用带有随机数的微秒(例如mt_rand()函数)来生成唯一键
答案 2 :(得分:0)
我使用bin2hex + random_bytes创建随机字符串,例如
例如:
$uuid = bin2hex(random_bytes(16));
According to Reddit。而且我们知道,如果它在Reddit上,这是真的