gpt4 book ai didi

ruby - SecureRandom.uuid 与 UUID gem

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:53 32 4
gpt4 key购买 nike

ruby 的 SecureRandom.uuid(Ruby 1.9.3)和 UUID gem 之间有区别吗? UUID gem 是“旧”的做事方式吗?

从文档中我了解到,gem 更“安全”地成为真正唯一的 UUID,而 SecureRandom.uuid 更像是一个随机字符串,它更有可能不唯一。此外,UUID 似乎允许基于文件的持久性来协助解决此问题。

所以我希望听到一些比我对此更有见识的人的意见。

最佳答案

有几种生成 UUID 的方法。

维基百科很好地列出了它们。

http://en.wikipedia.org/wiki/Universally_unique_identifier

v4 UUID:

关于随机的关键思想是,当与加密相关时,它实际上很难生成。大多数随机数生成器都是一个数学公式,只需要看起来是随机的,并且适用于大多数应用程序。许多程序会使用 $pid |时间,生成随机种子。

这不是很有希望......我知道请求是什么时候生成的,只有 65,534 个 pids。我可以从中找出随机种子。

因此,如果您在同一时间(同一秒)使用 $pid | 为您的 UUIDv4 数字生成器播种time() 在 100 台机器上使用 PID 号,那么你(我猜)有 100/65536 的重复机会。这可以像这样很容易地完成

for MACH in `cat machine_list`; do ; ssh $MACH -c "restart something" & ; done

安全随机数:

The code from SecureRandom, tries openssl, the /dev/urandom, then win32...

当从/dev/urandom 读取时,它是非常随机的,但如果系统中没有足够的困惑,urandom 会补足以提供随机数据。从/dev/random 读取时,它非常随机,如果没有足够的困惑,/dev/random 将阻塞。

UUID:

The UUID gem uses rand()

   r = [rand(0x100000000)].pack "N"

对于 mac 地址。

UUID 也不提供 v4 UUID :)

实际上,如果我遇到 md5 或 uuid 冲突,我就是在买彩票!

关于ruby - SecureRandom.uuid 与 UUID gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16650764/

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