【发布时间】:2016-09-07 07:29:47
【问题描述】:
我想在 .NET 中创建一个加密安全的 GUID (v4)。
.NET 的 Guid.NewGuid() 函数在加密上并不安全,但 .NET 确实提供了 System.Security.Cryptography.RNGCryptoServiceProvider 类。
我希望能够将随机数函数作为委托传递给Guid.NewGuid(或者甚至传递一些提供生成器接口的类),但默认实现似乎无法实现。
我可以同时使用System.GUID 和System.Security.Cryptography.RNGCryptoServiceProvider 创建一个加密安全的GUID 吗?
【问题讨论】:
-
路过近距离投票有什么理由吗?评论和反馈总是很受欢迎,因为它们很少见。
-
至少在 Windows 10 上,.NET NewGuid 使用 Ole32.CoCreateGuid,它使用 Rpcrt4.UuidCreate,它使用 BCryptPrimitives.ProcessPrng (download.microsoft.com/download/1/c/9/…)。所以我认为对于最新版本的 Windows,Guid.NewGuid 确实创建了加密安全的 GUID。