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:
关于随机的关键思想是,在与加密相关时实际上很难生成.大多数随机数生成器是一个数学公式,只需要随机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()
Run Code Online (Sandbox Code Playgroud)r = [rand(0x100000000)].pack "N"
对于mac地址.
UUID也不提供v4 UUID :)
实际上,如果我有md5或uuid碰撞我买彩票!