SecureRandom.uuid与UUID宝石

ruby的SecureRandom.uuid(Ruby 1.9.3)和UUID gem有什么不同? UUID是否是“老”的做事方式?

从文档中我了解到,gem更“安全”是一个真正独特的UUID,而SecureRandom.uuid更像是一个随机字符串,它具有更大的不唯一性。 此外,UUID似乎允许基于文件的持久性来协助完成此操作。

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


有几种生成UUID的方法。

维基百科做了很好的列出。

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

v4 UUID:

关于随机的关键思想是,当涉及到加密时,这实际上很难产生。 大多数随机数发生器是一个数学公式,只需要随机查看,对大多数应用程序来说工作正常。 许多程序将使用$ pid | 时间,以生成随机种子。

哪个不是很有希望......我知道什么时候生成了请求,并且只有65,534个pid。 我可以从中得出随机种子。

因此,如果您在$ pid |的同一时间(同一秒)播种您的UUIDv4号码生成器 时间()跨100台机器的PID号码,那么你(我猜)有100/65536的重复机会。 这可以像这样很简单地完成

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

SecureRandom的:

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

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

UUID:

UUID gem使用rand()

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

为mac地址。

UUID也不提供v4 UUID :)

实际上,如果我遇到过md5或uuid碰撞,我会购买一张彩票!

链接地址: http://www.djcxy.com/p/91481.html

上一篇: SecureRandom.uuid vs UUID gem

下一篇: Unique serial number in a java web application