python中使用uuid.uuid1()和uuid.uuid4()

发布时间 2023-04-17 15:23:55作者: aha_baby

我从文档中了解了两者之间的差异

https://docs.python.org/2/library/uuid.html

https://docs.python.org/3/library/uuid.html

uuid1()
从主机ID,序列号和当前时间生成UUID

uuid4()
生成随机UUID。

因此uuid1使用机器/序列/时间信息来生成UUID。使用每个的利弊是什么?

我知道uuid1()可以有隐私问题,因为它基于机器信息。我想知道在选择其中一个时是否更加微妙。uuid4()现在就使用它,因为它是一个完全随机的UUID。但我想知道我是否应该用它uuid1来减少碰撞的风险。

 

 

解决方案

 


 

uuid1()保证不会产生任何碰撞(假设您不会同时创建太多碰撞)。如果重要的是它uuid和计算机之间没有连接,我就不会使用它,因为mac地址被用来使它在计算机上独一无二。

 

您可以通过在不到100ns 的时间内创建超过2 14 uuid1 来创建重复项,但对于大多数用例来说这不是问题。

 

uuid4()正如你所说,生成一个随机的UUID。碰撞的可能性确实非常小。足够小,你不应该担心它。问题是,一个坏的随机数生成器使它更容易发生冲突。

 

Bob Aman的这个出色的答案总结得很好。(我建议阅读整个答案。)

 

坦率地说,在没有恶意攻击者的单个应用程序空间中,即使在版本4 UUID上,即使你每秒生成相当多的UUID,地球上所有生命的灭绝也会在你发生碰撞之前很久就会发生。