两个 GUID(键)可以相同吗?

  • 本文关键字:GUID 两个 c# guid
  • 更新时间 :
  • 英文 :


我为我的软件生成密钥为:

Guid.NewGuid().ToString();

返回类似以下内容:15c6bd70-8d3c-42d0-bb24-40da6e08ed9d

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

编辑

Guid类的构造函数将 16 个字节的字节数组作为参数。如果序列化当前日期(8 个字节),然后将另外 8 个随机字节追加到 GUID 的构造函数中,这是否 100% 安全?我只是要求根据你的答案学习,我可能只会有Guid.NewGuid()

摘自

有史以来关于 Guid 的最好的博客系列之一:

有许多可能的策略可用于创建唯一的 GUID,事实上,有关所用策略的信息编码在第三个"组"的前四个位中;您看到的几乎每个 GUID 都将采用 {xxxx-xx-1xxx-xx-x

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

简而言之,它们不太可能发生碰撞

是的,这是可能的,但极不可能。GUID 冲突的概率与内存中 GUID 中的位自发更改的可能性大致相同,而且您通常不会担心这种事情。

你已经可以100%确定,当然,如果你不是说你需要100.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

只需使用 Guid.. 无需附加任何内容。除非你期望卖出比宇宙中原子更多的副本(不太可能)。

相关内容

  • 没有找到相关文章

最新更新