我该如何创建GUID?

Ste*_*nte 13 php guid

我将要将图像上传到系统,并且需要通过非顺序唯一ID来引用它们.我已经阅读了一些关于GUID的内容,我想知道在PHP中创建一个GUID的最佳方法是什么.我应该md5()当前的时间戳和盐,或PHP的uniqueid(http://www.php.net/manual/en/function.uniqid.php)功能是否足够?

谢谢!

Bra*_*enP 20

编辑:

哎呀!我忘记了我的这个古老的答案.为了澄清我的幼稚造成了混乱(下面提出的意见一致):MD5(如最有用的哈希值,根据其性质)的射的,所以它们的输出不能保证对所有输入唯一的.

如果散列冲突是一个问题(在这种情况下,它们是),使用此技术将需要在散列后检查是否已生成相同的密钥.


由于uniqid使用当前时间(以微秒为单位)来生成guid,因此几乎没有机会遇到过两次相同的时间.

因此,如果您只是使用它来创建唯一的文件名,uniqid()就足够了.如果你想阻止用户猜测guid,那你也可以把它变得更难和md5.

  • @BraedenP:不,MD5是一个主观函数,因为它将一组无限的输入值映射到一组有限的输出值. (19认同)
  • 只要时间函数本身是单调的,基于时间的功能只能保证唯一.日期时间更改,夏令时和时区使这样的假设无效. (3认同)
  • 如果你md5一个已经独特的键,它将保持唯一. (2认同)

ZZ *_*der 6

GUID是Microsoft的UUID版本.PHP的uniqid是UUID的第4版.绝对够好.