GUID 通常用于唯一地标识各种实体 - 来自外部系统、文件等的请求。像魔术一样工作 - 您调用“GiveMeGuid()”(Windows 上的 UuidCreate())函数 - 一个全新的 GUID 随时为您服务。
鉴于我的代码每次需要新的 GUID 时都会调用“GiveMeGuid()”函数,是否有任何不那么明显的方式来滥用它?
刚刚找到一个老问题的答案:.Net GUID 的确定性如何? https://stackoverflow.com/questions/1402696/how-deterministic-are-net-guids/1402724#1402724。重新引用它:
这不是一个完整的答案,但我可以告诉你,第 13 个十六进制数字始终是 4,因为它表示用于生成 GUID 的算法版本(id est,v4);另外,我引用维基百科:
WinAPI GUID 生成器的密码分析表明,由于 V4 GUID 的序列是伪随机的,因此在给定初始状态的情况下,我们可以预测函数 UuidCreate 返回的下一个 250 000 个 GUID。这就是为什么 GUID 不应该在密码学中使用,例如作为随机密钥。
所以,如果你足够幸运并获得相同的种子,你将依次打破 250k 个镜子。引用另一个维基百科文章 http://en.wikipedia.org/wiki/Guid:
While each generated GUID is not guaranteed to be unique, the total number of unique keys (2128 or 3.4×1038) is so large that the probability of the same number being generated twice is extremely small.
底线:考虑 GUID 可能是一种误用形式always unique.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)