我需要一个32个字符的随机字符串作为盐来散列一些值。每个用户生成此随机字符串。
为每个用户生成guid和使用RNGCryptoServiceProvider之间有什么区别?
答案 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)。可能完全可预测的密码 不是个好主意。