raT*_*aTM 6 .net security cryptography guid
我已经在线搜索了多个资源,但到目前为止还无法找到一个明确的答案,即微软的GUID生成机制是否足够安全以保证它可以作为整个应用程序的唯一ID使用.
为了澄清,'足够安全',我的意思是询问用于生成GUID的算法是否具有任何已知的弱点或漏洞,这些弱点或漏洞可能会降低GUID的有效随机性,即导致不可忽略的冲突次数.如果不是,这是否意味着GUID是完全不可行的,如果是,有一些方法可以为GUID生成器函数设定种子,以有效地增加生成的GUID的随机性.
基于在MSDN引导这里(中指定的信息http://msdn.microsoft.com/en-us/library/system.guid.aspx)是没有任何迹象表明用于生成GUID该系统可以在要被依赖足够随机.
谢谢!
Jor*_*ger 12
我不同意接受的答案。虽然通常不建议使用RFC的建议,但在这种情况下,我能够找到MSDN文档,该文档指定Microsoft确实采取了明显而有用的方法,并将加密安全的RNG绑定到了v4 GUID的生成中:
根据https://msdn.microsoft.com/zh-cn/library/system.guid.newguid(v=vs.110).aspx,.NET的GUID创建仅包含Windows函数CoCreateGuid和UuidCreate。根据https://msdn.microsoft.com/zh-CN/library/bb417a2c-7a58-404f-84dd-6b494ecf0d13#id11的说法,自Windows 2000于1999年问世以来,
“通过Windows CryptGenRandom加密API或等效的(用于生成加密密钥的相同来源)获得Windows内置的所有第4版GUID的随机位”
因此,我想您可以称其为加密安全-至少达到它们提供的122位熵的程度。
exp*_*nit 10
没有.Guid的目标是独一无二,但加密安全意味着它是不可预测的.这些目标有时但不总是一致的.
如果您想要加密安全,那么您应该使用像RNGCryptoServiceProvider这样的东西
也可以看看:
上述链接中的关键点是Microsoft的Guid是UUID的实现,UUID规范表明它们不应该用作安全性令牌:
不要以为UUID难以猜测; 例如,它们不应被用作安全功能(仅仅拥有访问权限的标识符).可预测的随机数源将加剧这种情况.