postgres UUID号码是否随机均匀?

时间:2016-05-24 14:27:12

标签: random uuid entropy

查看由RFC 4122,ISO / IEC 9834-8:2005(源http://www.postgresql.org/docs/9.1/static/datatype-uuid.html)定义的Postgres生成的主键UUID。我们可以认为这些数字在所有长度上是均匀随机的吗?

鉴于此UUID:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

我们可以客观地假设a0eebc99bd380a11同样是随机的吗?如果没有,为什么?

1 个答案:

答案 0 :(得分:1)

UUID通常意味着并且被优化为独特的。它们不提供有保证的随机性。您不应该使用UUID作为机密和/或随机数生成器。

有多个版本如何生成UUID,其中大多数不是随机的,而是可预测的。请参阅Wikipedia article on UUIDs和各种版本。

如果您想避免ID的冲突,请使用UUID,如果您需要机密,请使用强加密(P)RNG。

另请注意,变体是在UUID本身中编码的,因此至少这部分UUID根本不是 随机。

编辑:Raymond Chen在他的着名博客" Old New Thing"中有一个有趣的article。几乎就是这个问题。