如何在SQL Server中生成GUID?
我知道我应该使用newid()
,但函数使用的算法是什么?它是时间/日期的哈希吗?
答案 0 :(得分:7)
此处描述了创建它的算法:http://en.wikipedia.org/wiki/Globally_Unique_Identifier
<强>算法强>
在用于生成新(V1)GUID的OSF指定算法中, 用户的网卡MAC地址用作最后一组的基础 GUID数字,例如,文档可以是 追溯到创建它的计算机。这个隐私漏洞是 在找到Melissa蠕虫的创造者时使用[2]。大部分的 其他数字基于生成GUID时的时间。 V1 GUID 包含MAC地址和时间的数字可以用数字标识 例如,在第三组数字的第一位置“1” {2f1e4fc0-81fd-11DA-9156-00036a0f876a}。 V4 GUID使用后者 算法,是一个伪随机数。这些中有一个“4” 相同的位置,例如{38a52be4-9352-453e-af97-5c3b448652f0}。 更具体地说,'data3'位模式将是0001xxxxxxxxxxxx 在第一种情况下,和第二种情况下的0100xxxxxxxxxxxx。密码分析 WinAPI GUID生成器显示,因为V4的序列 GUID是伪随机的;它充分了解内部状态 可以预测先前和后续的值