Data::GUID能生成有效的GUID吗?

3

我正在使用Data::GUID来生成GUID。然而,每当我在同一“会话”中生成GUID(即运行脚本),唯一变化的数字是最前面的数字:

3BAF1240-0573-11E4-B31C-B8EC0EDF341C
3BAF1588-0573-11E4-B31C-B8EC0EDF341C
3BAF1678-0573-11E4-B31C-B8EC0EDF341C

第一组数字是唯一会改变的一组数字。如果我再次运行脚本,那么剩下的数字会稍有不同,但第二组和第三组数字仍然相同:

E5D3A59C-0573-11E4-AA07-A5F15201CE1F
E5D3A920-0573-11E4-AA07-A5F15201CE1F
E5D3A9C0-0573-11E4-AA07-A5F15201CE1F

但是,只有在第一组数字中才会发生变化。这与我在C#中生成GUID时得到的结果非常不同,而且我认为GUID应该是随机的,那么为什么只有前面的数字组发生变化?我使用生成的GUID作为GUID是否可以?

1个回答

6
这段话中不变的部分基于你的 MAC地址,也就是第三组的第一个数字是1。其余的位基于当前时间,所以它们并不会经常变化。
这些数字无需完全随机,只需要匹配另一个GUID的概率极低即可。基于MAC地址和当前时间 (版本 1 算法) 可以做到这一点,但还有其他算法(例如 版本 4 是随机的)。
请参阅 http://en.wikipedia.org/wiki/Globally_unique_identifierhttp://en.wikipedia.org/wiki/Universally_unique_identifier

谢谢!那很有道理。 - srchulo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接