随机字符串vs Guid

时间:2014-08-06 11:13:19

标签: c# cryptography

我需要一个32个字符的随机字符串作为盐来散列一些值。每个用户生成此随机字符串。

为每个用户生成guid和使用RNGCryptoServiceProvider之间有什么区别?

2 个答案:

答案 0 :(得分:2)

生成唯一键与生成32 随机字符之间的区别。这是关于它的。做你想做的事。

如果您需要某种方式来唯一地标识该用户,即使合并了数据库,也请使用GUID。如果您需要使用salt来散列密码,请使用随机byte[]。在其他情况下,它们都不能很好地运作。

答案 1 :(得分:0)

读完这篇文章之后,我理解了它的不同之处 http://blogs.msdn.com/b/oldnewthing/archive/2012/05/23/10309199.aspx

  

GUID设计为唯一的,而非随机的

     

GUID生成算法是为唯一性而设计的。它不是为随机性或不可预测性而设计的。的确,如果你   看一下之前的讨论,你可以看到所谓的算法1   是非随机的,完全可以预测的。如果您使用算法1 GUID   生成器为候选人分配GUID,您将找到GUID   按数字升序分配(因为时间戳   增加)。客户提出的算法最有可能最终结束   选择陪审团职责的前N人进入系统   在32位定时器翻转之后。绝对不是随机的。

     

同样,想要使用GUID进行密码生成的人会发现密码完全可以预测   你知道GUID生成的时间和生成的计算机   GUID(你可以通过查看最后的六个字节来获得)   一些其他密码-GUID)。可能完全可预测的密码   不是个好主意。