Есть ли готовый алгоритм генерации кода приглашения по ruby?Сначала я могу подумать, MD5, но его выход слишком велик для 32, поэтому я хочу, чтобы длина выхода была меньше 16.
Заранее спасибо.
Предполагая, что вы храните код (в противном случае, какой смысл?), Просто создайте случайную строку и проверьте, существует ли она перед сохранением, и попробуйте новую строку, если она есть.Основной алгоритм не требуется.
SecureRandom.uuid
Это приведет к следующему.
2.1.0 :005 > SecureRandom.uuid => "b2a8ed4c-f71f-4c7d-a0fb-a66de58d37cc" 2.1.0 :006 >
Достаточно короткий и крайне маловероятный, чтобы вызвать столкновение.
Насколько "безопасен" вы хотите свой код приглашения?Вы можете сгенерировать хеш MD5 и просто взять первые или последние 16 символов или любую комбинацию из 16 символов из хеш-кода (например, любую другую позицию в хэше).Это должно быть достаточно для приглашения.