怎么有人说用md5生成唯一id呢?

pgmsoul 2012-09-07 10:10:24
由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数(请在字符串函数参考中查找)。

有人推荐md5(uniqid(rand(), true));这样用.

如果uniqid不能保证绝对不重复, md5毫无作用啊? 因为md5依赖于输入, 和是否唯一无关啊.
...全文
1117 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
longsc3 2012-09-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
自动递增id
[/Quote]
ddddd
ci1699 2012-09-09
  • 打赏
  • 举报
回复
自动递增id
  • 打赏
  • 举报
回复
substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 6).''.mktime(date("Y-m-d H:i:s"));

时间加随机数,基本上不会重复了。
franzhong 2012-09-08
  • 打赏
  • 举报
回复
时间加随机数,重复概率可以忽略了,一般都够用的
若想百分百,可以存数据库,生成数后去DB里检查,重复就重生成一次,否则插入数据
Meteorlet 2012-09-08
  • 打赏
  • 举报
回复
如#7所解释的,最好是 md5(uniqid(session_id(), true)); 或者 md5(uniqid(user_id, true));
Meteorlet 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

PHP code
substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 6).''.mktime(date("Y-m-d H:i:s"));

时间加随机数,基本上不会重复了。
[/Quote]

这样是不可靠的,表面看随机数是不可能重复的,但是如果随机数的生成只与时间有关的话,那么同一个时刻,同样的随机算法,生成的随机数就是相同的,当然这种概率是很低的.

一般唯一id都会加入一些唯一表示符,比如机器的GUID,就可以吧mac地址,cpu型号等硬件信息加入guid这样生成的就能保证跟其他任何一台机器产生的GUID不会重复.

再比如如果要为每个用户生成一个唯一id的, 最好把用户ID信息放进来,这样可以保证每个用户生成的都是唯一的,而且同一个用户操作总是有先后的,也不可能生成重复的id.
has007 2012-09-08
  • 打赏
  • 举报
回复
可以通过$_GET[]获得需要加密的ID然后进行md5的加密也可以自己写个加密方法啊
tiyee 2012-09-08
  • 打赏
  • 举报
回复
我一般也是到毫秒的时间加一段随机码
helloyou0 2012-09-07
  • 打赏
  • 举报
回复
你的理解是对的.

手册上有这么一段注释, 看起来类似但是含义完全不同: (hmmm,这个中文版手册又滞后了,没有这段)

This function does not generate cryptographically secure tokens, in fact without being passed any additional parameters the return value is little different from microtime(). If you need to generate cryptographically secure tokens use openssl_random_pseudo_bytes().
qq120848369 2012-09-07
  • 打赏
  • 举报
回复
那你再多整点随机的东西上去不就得了?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧