rails - Предложение по созданию безопасного UUID - PullRequest
0 голосов
/ 25 ноября 2010

Мне нужно создать уникальный идентификатор, чтобы защитить что-то очень безопасное.

Прямо сейчас в Rails я делаю:

uuid = (UUIDTools::UUID.timestamp_create().to_s.gsub('-','') + UUIDTools::UUID.timestamp_create().to_s.gsub('-',''))

Что вы думаете об этом методе? Умный? Плохой? Предложения?

Спасибо

Ответы [ 4 ]

2 голосов
/ 26 ноября 2010

Трудно прописать решение без дополнительного контекста вокруг вашего вопроса, но псевдослучайные числа приличного качества, вероятно, будут полезны. В Rails для этого удобен ActiveSupport :: SecureRandom.

2 голосов
/ 26 ноября 2010

Если вы хотите, чтобы ваши идентификаторы были непредсказуемыми для любого противника, вам следует использовать криптографически сильный генератор псевдослучайных чисел.С точки зрения размера битов 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 безопасных случайных шестнадцатеричных символа.

1 голос
/ 25 ноября 2010

UUID не предназначены для обеспечения безопасности и не должны быть важной частью любой техники безопасности.См. http://www.ietf.org/rfc/rfc4122.txt - особенно раздел 6.

0 голосов
/ 11 июля 2013

Он сгенерирует случайный UUID v4 (универсальный уникальный идентификатор), который является уникальным в большом пространстве имен для универсального уникального номера для создания идентификатора в базе данных.

require 'securerandom'
UUID = SecureRandom.uuid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...