我需要创建一个唯一的ID来保护非常安全的东西。rails - 建议提供一个安全的UUID
现在在Rails的我做:
uuid = (UUIDTools::UUID.timestamp_create().to_s.gsub('-','') + UUIDTools::UUID.timestamp_create().to_s.gsub('-',''))
你对这种方法的想法?聪明?坏?建议?
感谢
我需要创建一个唯一的ID来保护非常安全的东西。rails - 建议提供一个安全的UUID
现在在Rails的我做:
uuid = (UUIDTools::UUID.timestamp_create().to_s.gsub('-','') + UUIDTools::UUID.timestamp_create().to_s.gsub('-',''))
你对这种方法的想法?聪明?坏?建议?
感谢
如果你想让你的标识符对任何对手来说都是不可预知的,你将需要使用一个密码强的伪随机数生成器。就位大小而言,128位(或16位)是一个很好的数字。
# if using Ruby < 1.9:
require 'active_support/secure_random'
id = SecureRandom.random_bytes(16)
也有方法.hex
,.base64
,并.urlsafe_base64
为您提供方便。这些只是生成相应数量的随机字节,然后在适当的方案中对随机字节进行编码。例如,SecureRandom.hex(16)
将为您提供32个安全随机的十六进制字符。
的UUID并非设计用于安全的实力,不应该有任何的安全技术的重要组成部分。请参阅http://www.ietf.org/rfc/rfc4122.txt - 尤其是第6部分。
谢谢DMW。你有什么建议? – AnApprentice 2010-11-25 15:57:48
很难在没有更多上下文的情况下为您的问题规定解决方案,但质量好的伪随机数很可能会有用。在Rails中,ActiveSupport :: SecureRandom对此非常方便。
非常好,你如何使用ActiveSupport :: SecureRandom?你能举一个例子吗?谢谢!!! – AnApprentice 2010-11-25 21:14:08
它将生成一个v4随机UUID(通用唯一标识符),在整个大型命名空间中是唯一唯一编号,以在数据库中生成一个标识。
require 'securerandom'
UUID = SecureRandom.uuid
安全意味着什么?碰撞的概率? – Mobbit 2010-11-25 08:11:10
`保护一些非常安全的东西??`o_O – 2010-11-25 21:07:50