我需要创建一个唯一的ID来保护非常安全的东西。
现在我正在做Rails:
uuid = (UUIDTools::UUID.timestamp_create().to_s.gsub('-','') + UUIDTools::UUID.timestamp_create().to_s.gsub('-',''))
您对此方法有何看法?聪明?坏?建议?
由于
答案 0 :(得分:2)
如果没有更多关于你问题的上下文,很难规定一个解决方案,但是质量好的伪随机数很可能是有用的。在Rails中,ActiveSupport :: SecureRandom非常方便。
答案 1 :(得分:2)
如果您希望任何对手无法预测您的标识符,您将需要使用加密强大的伪随机数生成器。就位大小而言,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个安全随机的十六进制字符。
答案 2 :(得分:1)
UUID不是为了安全性而设计的,不应该是任何安全技术的关键部分。见http://www.ietf.org/rfc/rfc4122.txt - 尤其是第6节。
答案 3 :(得分:0)
它将生成一个v4随机UUID(通用唯一标识符),它在大型命名空间中是唯一的,用于在数据库中生成ID的通用唯一编号。
require 'securerandom'
UUID = SecureRandom.uuid