Objective c CFUUIDCreate是否均匀分布在所有it部门';什么是比特?

Objective c CFUUIDCreate是否均匀分布在所有it部门';什么是比特?,objective-c,core-foundation,Objective C,Core Foundation,如果有人知道从CFUUIDCreate返回的ID是否。。。平均分布在其所有位上。更具体地说:如果你从中截取一些位,它还会均匀分布吗 我要求它知道,如果它可以用作哈希函数,如果我删除它的一些比特,它会有多少个冲突。 它高度依赖于生成的uuID的版本,从文档看起来像苹果正在使用的(你可以检查实际的实现,它应该在核心基础框架中)。. 版本1(和版本2)没有均匀分布的位,因此当您开始切割其位时,您将失去唯一性。您可以做的是使用SHA256或类似的方法对UUID进行散列,这些方法将具有均匀分布的位 < >

如果有人知道从CFUUIDCreate返回的ID是否。。。平均分布在其所有位上。更具体地说:如果你从中截取一些位,它还会均匀分布吗


我要求它知道,如果它可以用作哈希函数,如果我删除它的一些比特,它会有多少个冲突。

它高度依赖于生成的uuID的版本,从文档看起来像苹果正在使用的(你可以检查实际的实现,它应该在核心基础框架中)。. 版本1(和版本2)没有均匀分布的位,因此当您开始切割其位时,您将失去唯一性。您可以做的是使用SHA256或类似的方法对UUID进行散列,这些方法将具有均匀分布的位


< >编辑:我刚刚从最新的核心基础发布(744.18在写作时)检查过,而<>代码> CFUUIDRef CFUUIDCreate(CFAllocatorRef alloc)似乎在所有的情况下使用(有一个分支检查一个布尔名为“代码> UVE1UUID< /COD>这总是错误的”。根据手册页,
uuid\u generate\u random
将使用
/dev/uradom/
创建uuid,这将给出结果uuid均匀分布的位。但我不确定我是否会认为它总是随机的,未来的实现可能会发生变化。

非常棒的答案。谢谢现在我知道在哪里寻找未来的参考。总而言之:结论是:到目前为止,它是均匀分布的,但不能保证在未来的版本中它将保持不变。因为它不是规范/设计的一部分。此外,sha-ing或md5-ing绝对是一个简单的“修复”它的发行版。