关于php的uniqid生成唯一ID的疑问

如下图,md5不是依赖输入么?为什么加md5就能绝对唯一了?求大神解答!

image.png

阅读 3.6k
4 个回答

终于自己找到原因了,md5(uniqid(mt_rand(), true)),这个其实就是双随机+时间戳生成的唯一id,基本上,这个算法在很大程度上能保证唯一性了,但确实存在碰撞的可能。
image.png

结论:
1、md5(uniqid(mt_rand(), true)) 理论上确实存在碰撞可能
2、小公司放心用,大厂就谨慎使用

md5(uniqid(mt_rand(), true))

PHP 又不是没有官方手册,为啥要看二手的资料呢……

谁也没说你百度出来的结果就一定都是对的。

Warning: This function tries to create unique identifier, but it does not guarantee 100% uniqueness of return value.

警告:此函数尽可能会创建唯一识别符,但它不保证返回值百分百唯一。

https://www.php.net/manual/en...

P.S. 任何只依赖伪随机数发生器的算法,都无法做到“真·唯一”,只能尽可能降低碰撞概率。

要想尽可能保证唯一性的话,那当然是使用雪花算法了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题