是否有一种便携的方式来生成真正的随机全局唯一标识符(guid)?

问题描述:

我正在寻找一个实用程序来生成一个真正的随机全局唯一标识符(guid),以便复制和粘贴生成的guid在源代码中。是否有一种便携的方式来生成真正的随机全局唯一标识符(guid)?

许多基于一些内置的guid生成器的实用程序。这些发生器可能包括网卡MAC地址,系统时钟,伪随机序列等。

发生器必须是真随机的。这是因为我坚信任何试图降低guid碰撞概率的尝试都会增加这种可能性。

我曾希望找到一种方法,使用内置在CPU中的白噪声采样。

找不到便携式解决方案我最终查询了random.org,相信他们做得很好。

附上一个Windows commandline utility,它通过HTTP查询random.org,组装一个真正的随机guid,并将guid复制到剪贴板。

getguid 
Guid d9cc9db3-dd4a-b05a-44ac-679b7dbefcf0 copied to the clipboard. 
Quota remaining at random.org: 999872 bits. 
Press enter. 

你在random.org的免费配额将是每天1000000比特;每个请求的费用消耗128位。

的拉链包含可执行和在Visual Studio中使用的源代码2015或2017

注意,实用程序生成真随机比特的GUID的所有128位。这是标准的违规。例如,this wiki article描述了guid应该花费几位来指示guid类型。然而,效用更倾向于完全随机化,以最大化guid的范围并希望将碰撞概率降至最低。