Зашифровать или хешировать строку в десятичные числа в Ruby - PullRequest
0 голосов
/ 05 июня 2018

В одном из наших процессов регистрации в приложении Ruby on Rails я хочу отправить кому-нибудь электронное письмо с 6-значным числовым кодом, который ему нужно скопировать или ввести в поле на странице.

Как я думал, я мог бы сделать это, чтобы иметь строку на странице, скажем, в скрытом поле, которое при генерации электронной почты объединяется с каким-то секретным ключом из нашей кодовой базы, а затем хэшируется или шифруется до десятичной серииномера.Затем я беру последние шесть из них и помещаю их в электронное письмо.

Когда форма отправлена ​​с исходной строкой и 6 цифрами, набранными пользователем, я могу повторить процесс для строкии проверьте, что он выдает те же шесть цифр, что и введенный пользователем.

Вопрос: как мне хешировать / шифровать строку, чтобы получить серию десятичных чисел?Исходная строка может быть чем угодно (включая другой набор десятичных чисел), она просто должна быть чем-то, что генерируется случайным образом.

1 Ответ

0 голосов
/ 05 июня 2018

Примечание: Не используйте это в качестве меры безопасности.Вы заявили, что намереваетесь использовать это только как разновидность системы diy captcha, и этот ответ предоставляется в этом контексте.

OpenSSL предоставляет хорошие хэш-функции.Когда у вас есть хеш в шестнадцатеричном формате, метод to_i принимает базовый аргумент, поэтому преобразование в десятичное просто.Затем вернемся к строке, потому что это облегчает получение последних символов.

require 'openssl'
hash = OpenSSL::Digest::SHA256.hexdigest('user@example.com' + Random.new_seed.to_s)
message = hash.to_i(16).to_s.chars.last(6).join

Затем вы можете сохранить любую часть этого вместе со временем истечения.

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