我需要創建一個唯一的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