Преобразование. NET Web API Token в 6-значный номер OTP - PullRequest
0 голосов
/ 23 января 2020

Как преобразовать следующий маркер 6 ди git число и наоборот.

Hash / Encrypt

Q3XMaFgx3l0n9Nkb8XIUTZ9jqWDOJtefhPtv0yXPQhFBUq_hhGyW9p54apIDTpFs5Am_6Rs8VSKLClDJjFfOtM78I8EDLjwd4zjvWK0WBN9g7I2_F2D9uxEWfSUrgIIzAqw2jqGkOweW7avOmdtAdaTzlqtAY1eXJfgZg1JrkWmr9oqxsEeedViYMrJgGLssIGJM_pjTEnlwsmQiVdH5wJWwDgj5No8Wt7YdsV1sKs_44rrjfavhI4tez0vbMoeWAj5sXqTaVGH4AeVLrIUkyN7XsNJhBFTOEWyqC3L5uOXkqT_KRXOF6DV0fdMIfBmUx05hw4A =========> 123456

1010 * Reverse хеширование / дешифрования [вернуть первоначальный маркер] * * * 1011 1012

1 Ответ

0 голосов
/ 23 января 2020

То, что вы просите, на самом деле невозможно. Хотя функции Ha sh могут выводить данные в определенном диапазоне, их нельзя отменить, и шифрование (в широком смысле) требует, чтобы зашифрованный текст был такой же длины, что и обычный текст.

На основе комментарии, что вам нужно сделать, это сгенерировать число 6 git и сохранить его в течение очень короткого периода времени для облегчения входа в систему.

Вы можете использовать Интерфейс MemoryCache class (Full framework) или IMemoryCache (net core) для хранения случайно сгенерированного числа, введенного с помощью идентификатора пользователя или электронной почты, и проверки того, что значение существует и соответствует тому, которое было предоставлено пользователь.

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

Вам следует рассмотреть возможность использования установленной библиотеки для m SMS 2FA, предполагая, что это действительно конечная цель. Быстрый Google нашел это:

https://docs.microsoft.com/en-us/aspnet/identity/overview/features-api/two-factor-authentication-using-sms-and-email-with-aspnet-identity

...