当前位置:  开发笔记 > 运维 > 正文

System.Guid.NewGuid()是如何随机的?

如何解决《System.Guid.NewGuid()是如何随机的?》经验,为你挑选了3个好方法。

我知道这可能听起来像一个毫无意义的问题,但是听我说...

我基本上想知道我是否可以信任GUID来生成一个在100%的时间内都是唯一且无法预测的值.

我基本上是在网站的登录系统上滚动,并想知道GUID是否足够安全用于会话cookie.

在评估答案时,将非常感谢有关如何生成GUID的任何背景知识.

感谢您提供重复问题的链接,但我的问题仅针对.Net框架.



1> John Sheehan..:

这是Raymond Chen的精彩细分


这不是.NET中使用的算法.这描述了版本1..NET使用版本4(有关版本4的简要说明,请参阅http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Version_4_.28random.29)
虽然这在理论上可以回答这个问题,[最好](// meta.stackoverflow.com/q/8259)在这里包含答案的基本部分,并提供参考链接.
总而言之,它们不是非常随机的.也就是说,来自同一服务器的连续guid将有很多共同之处.
文章甚至如何回答这个问题?文章对GUID生成的随机性和可预测性有何评论?我认为http://blogs.msdn.com/b/oldnewthing/archive/2012/05/23/10309199.aspx更好地回答了这个问题,即GUID生成实际上是唯一的,但不是随机的,也是可预测的.

2> Marc Gravell..:

没有固定长度的值可以保证100%唯一(只需调用足够的次数,给予或取得宇宙结束;-p) - 但它可能非常非常非常不可能复制.



3> tvanfosson..:

我不能说序列号的可预测性,但是它将是独一无二的。我认为您最好使用System.Security.Cryptography中的随机数生成器。将具有单调递增值(时间)的随机数绑定以生成唯一密钥,可以确保它是唯一且不可预测的。

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有