gpt4 book ai didi

c# - 在寻找数据的唯一 ID 时依赖 System.Guid.NewGuid() 函数有什么缺点吗?

转载 作者:太空狗 更新时间:2023-10-29 18:03:04 25 4
gpt4 key购买 nike

我希望生成唯一 ID 以识别我系统中的某些数据。我正在使用一个复杂的系统,它将一些(非唯一的、相关的)元数据与 System.Guid.NewGuid() 连接起来。这种方法有什么缺点吗?或者我清楚吗?

最佳答案

I'm looking to generate unique ids for identifying some data in my system.

那么我建议使用 GUID,因为根据定义它们是全局唯一标识符

I'm using an elaborate system which concatenates some (non unique, relevant) meta-data with System.Guid.NewGuid(). Are there any drawbacks to this approach, or am I in the clear?

嗯,由于我们不知道您认为什么是缺点,所以很难说。我想到了一些可能的缺点:

  • GUID 很大:128 位是很多位。

  • 不保证 GUID 有任何特定分布;按顺序生成 GUID 是完全合法的,并且在其 124 位空间(128 位减去 4 位当然是版本号)上均匀分布是完全合法的。这会对数据库产生严重影响如果 GUID 被用作按 GUID 排序顺序索引的数据库的主键,则性能;如果新行总是在末尾,则插入效率更高。一个统一分布的 GUID 几乎永远不会在最后。

  • 第 4 版 GUID 不是必然加密随机的;如果 GUID 是由非加密随机生成器生成的,则攻击者理论上可以在给定 GUID 的代表性样本时预测您的 GUID 是什么。理论上,攻击者可以确定在同一 session 中生成两个 GUID 的概率。第一版 GUID 当然几乎不是随机的,并且可以告诉老练的读者它们是何时何地生成的。

  • 等等

我计划在接下来的几周内撰写一系列关于 GUID 的这些和其他特征的文章;看我的博客了解详情。

更新:https://ericlippert.com/2012/04/24/guid-guide-part-one/

关于c# - 在寻找数据的唯一 ID 时依赖 System.Guid.NewGuid() 函数有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10217487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com