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