SecureRandom.uuid vs UUID gem

Dmi*_*ten 12 ruby uuid

ruby的SecureRandom.uuid(Ruby 1.9.3)和UUID gem之间有区别吗?UUID宝石是"老"的做事方式吗?

从我收集的文档中,gem更加"安全"成为一个真正独特的UUID,而SecureRandom.uuid更像是一个随机字符串,它更有可能不是唯一的.另外,UUID似乎允许基于文件的持久性来帮助解决这个问题.

因此,我希望能听到一些比我更有洞察力的人.

Dan*_*iel 6

有几种生成UUID的方法.

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

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

v4 UUID:

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

哪个,不是很有希望...我知道请求生成的时间,并且只有65,534个pid.我可以从中找出随机种子.

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

for MACH in `cat machine_list`; do ; ssh $MACH -c "restart something" & ; done
Run Code Online (Sandbox Code Playgroud)

SecureRandom的:

来自SecureRandom的代码,尝试openssl,/ dev/urandom,然后尝试win32 ......

当从/ dev/urandom读取时,它是非常随机的,但是如果系统中没有足够的混乱,则urandom将会提供随机数据.从/ dev/random读取时,它'非常随机,如果没有足够的混乱,/ dev/random将阻塞.

UUID:

UUID gem使用rand()

   r = [rand(0x100000000)].pack "N"
Run Code Online (Sandbox Code Playgroud)

对于mac地址.

UUID也不提供v4 UUID :)

实际上,如果我有md5或uuid碰撞我买彩票!