UUID(或GUID)算法是否会产生“人为”数字?
如:
我想知道手动设置GUID作为生成自己的PK(TSQL中的NEWID或NEWSEQUENTIALID)的表的PK是否安全。
答案 0 :(得分:1)
生成任何特定GUID的概率是2 -128 ,因此无论您将哪些GUID设置为PK,生成重复的机会都很小。多么小?你赢得纽约彩票的几率大约是一亿,或者比生成一个重复的GUID高出10 30 ,更高,所以你很安全。
当您需要使用固定ID时,通常的做法是在您的计算机上生成GUID,例如,通过Visual Studio菜单,或者编写一个小程序,然后将该GUID硬编码到您的程序中作为& #34;众所周知的价值"。
答案 1 :(得分:1)
http://en.wikipedia.org/wiki/Universally_unique_identifier和http://www.ietf.org/rfc/rfc4122.txt中指定了多种GUID的格式,在任何情况下,任意选择都不会与任何正确创建的GUID冲突。
但是,您选择的任意GUID可能与其他人选择的任意GUID相同 - 因为您要破坏规则。为了避免这种情况,我建议您掌握一个正确创建的GUID,并将其作为配置设置或将其硬连接到您的代码中。用于生成名为uuidgen的GUID的命令行程序存在于Linux上,并附带Windows SDK。快速搜索表明您还可以通过http://www.famkruithof.net/uuid/uuidgen和https://www.guidgenerator.com/online-guid-generator.aspx等网页生成一个。
以下是一些新生成的GUID
{CB58921C-66A9-4C64-B2F4-413166736071}
{8FE41A9D-A0AC-4D32-8C10-48796DEFBD9C}
{E280FE84-0E60-4880-91DC-7A7BB886E1EE}
(来自我在http://www.somacon.com/p113.php找到的脚本。)
答案 2 :(得分:-1)
在Windows PC上生成GUID的典型算法是连接两个十六进制编码值,通常是MAC地址的一部分和当前时间戳(因此同一台PC生成的所有GUID只会因时间戳部分而不同) 。因此,在您的情况下,PC几乎不可能随机生成您的样本值。