Если вам нужны трудно угадываемые 10-ди git идентификаторы, то SecureRandom
трудно победить.
Но учтите, что для генерации 10- ди git ID, лучше следующее: SecureRandom.random_number(10 ** 10)
. Обратите внимание, что при этом вероятность создания дублирующего числа становится вероятной после генерации около 100 000 из них (более точные формулировки и формулы см. В « День рождения »).
Если вы можете Примите небольшой набор букв (от a до f), в дополнение к цифрам, вам может помочь следующее: SecureRandom.hex(5)
. Здесь вероятность дубликатов меньше, и вероятность становится вероятной после генерации около миллиона из них.
Помните, однако, что, как правило, случайные числа создают риск дубликатов, поэтому вам нужен способ проверить случайные идентификаторы уникальности.
Альтернативой является шифрование последовательного счетчика секретным ключом (например, с помощью шифрования с сохранением формата). Хотя этот подход сохраняет уникальность, возникает необходимость защитить секретный ключ от атак.