C# 两个guid(键)可以相同吗?

C# 两个guid(键)可以相同吗?,c#,guid,C#,Guid,我为我的软件生成密钥,如下所示: Guid.NewGuid().ToString(); 它返回如下内容:15c6bd70-8d3c-42d0-bb24-40da6e08ed9d 不管怎样,每次有人购买一个新软件,我都会生成一个新的密钥。我可以生成相同的密钥两次吗?每次有人购买软件时,我都会调用以下方法:Guid.NewGuid().ToString()我是否应该在每个Guid的末尾附加一个计数器以100%确保不存在重复项 编辑 Guid类的构造函数将16字节的字节数组作为参数。如果序列化当前日

我为我的软件生成密钥,如下所示:

Guid.NewGuid().ToString();
它返回如下内容:
15c6bd70-8d3c-42d0-bb24-40da6e08ed9d

不管怎样,每次有人购买一个新软件,我都会生成一个新的密钥。我可以生成相同的密钥两次吗?每次有人购买软件时,我都会调用以下方法:
Guid.NewGuid().ToString()
我是否应该在每个Guid的末尾附加一个计数器以100%确保不存在重复项

编辑
Guid
类的构造函数将16字节的字节数组作为参数。如果序列化当前日期(8个字节),然后将另外8个随机字节附加到GUID的构造函数中,这是否100%安全?我只是要求根据您的答案进行学习,我可能只有
Guid.NewGuid()。。不需要附加任何内容。除非你希望卖出的拷贝数超过宇宙中的原子数(不太可能)。

这是有史以来关于Guid最好的著作之一的摘录:

有许多可能的策略用于生成唯一的GUID,事实上,关于所用策略的信息编码在第三个“组”的前四位中;几乎您看到的每个GUID的格式都是{xxxxxxxx-xxxx-1xX-xxxx-xxxxxxxx}或{xxxxxxxx-xxxx-4xxx-xxxx-XXXXXXXXXXXXXX}

如果有一个在那个地方,那么用于保证唯一性的算法本质上是ISBN策略的一个变体。通过选择一些位作为机器中网卡的MAC地址,可以保证GUID在“空间”中是唯一的。(确保世界上没有两张网卡具有相同MAC地址的棘手问题是由其他人以某种方式解决的;如何解决该问题,我们并不特别关心。解决该问题的成本将在购买网卡的成本中转嫁给您,即消费者。)


简而言之,它们发生碰撞的可能性非常小。

是的,这是可能的,但可能性非常小。GUID冲突的可能性与内存中GUID中的某个位自动更改的可能性差不多,而这种情况通常不会让您担心


如果你不是说你需要100.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000在计算中,即使是这么多在统计上也是不相关的。@David我的意思是说“亿万”五百万,亿万,百万。。。你们正在进入塞曼蒂克迷宫。重要的是,两个GUID发生冲突的几率比Valve发布半衰期3的几率要小,或者比Opera成为市场上最流行的浏览器的几率要小。
并且使用.NET实现,你不再利用MAC地址实现了,除非你使用的是非常旧的版本。@Servy,啊,这对我来说是新闻。我先不提了。MAC地址实际上不是唯一的。它们应该是,但事实上确实会发生冲突。@Guffa,是的,我想在我从Eric那里摘取的那部分中有一个更新,说明即使是MAC地址,实际上也存在文字冲突,而且它们当然可以被欺骗。我想说的是,正如你在回答中所说的,这几乎是不可能的。请不要猜测。可能的GUID数量:10^36()。宇宙中的原子数:10^78到10^82()。
“GUID冲突的概率大约相当于内存中GUID中自发变化的一点”
-我想我将查找这方面的统计数据,以便在向客户端解释GUID时使用它。我敢打赌,它甚至比比特变化的可能性更小,可能是数量级的变化,这使得一个伟大的比较成为可能。