【发布时间】:2013-05-15 02:01:44
【问题描述】:
ruby 的 SecureRandom.uuid (Ruby 1.9.3) 和 UUID gem 之间有区别吗? UUID gem 是“旧”的做事方式吗?
从文档中我了解到,gem 作为真正唯一的 UUID 更“安全”,而 SecureRandom.uuid 更像是一个随机字符串,它更有可能不是唯一的。此外,UUID 似乎允许基于文件的持久性来帮助解决此问题。
所以我希望听到一些比我更有洞察力的人的意见。
【问题讨论】:
-
不独特的“更大机会”在实践中极不可能发生。我认为 UUID gem 是v1 uuid,这里有一些模糊的相关(但不是答案):stackoverflow.com/questions/703035/…
-
这实际上很好地回答了这个问题。 ruby 版本是 v4,而 gem 是 v1。我使用 ruby 的方法遇到两个相同的 UUID 的可能性很小。在我的设置中使用 v1 实际上为零(除非我生成了 256 exobytes 的 uuid)。 “坦率地说,在没有恶意行为者的单个应用程序空间中,地球上所有生命的灭绝将在你发生碰撞之前很久就发生,即使在版本 4 UUID 上,即使你每秒生成相当多的 UUID。”
-
v1 UUID 也依赖于 MAC 地址的唯一性。在高度虚拟化的世界中,您可能会感到惊讶,虚拟网络适配器的 mac 地址的唯一性可能不如从
OpenSSL::Random获取的随机位那么强。 -
@dbenhur:真有趣。谢谢。是否应该关闭这个问题,因为它看起来更像是一次对话?