Шифрование пароля как аутентификация с помощью форм в .net Core - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть старое приложение, которое работает только для чтения членства поставщика.Мне поручено создать страницу администратора, чтобы помочь с добавлением / изменением / удалением пользователей из этого приложения.Поставщик членства использует FormsAuthentication, который я не могу использовать, потому что мое приложение администратора находится в .net Core.Я пытаюсь реконструировать способ, которым они шифруют, используя FormsAuthentication, и у меня так:

Они используют:

FormsAuthentication.HashPasswordForStoringInConfigFile(password, "sha1").ToLower();

Я имеюперепроектировать его в:

(передается строка pwd)

HashAlgorithm hashAlgorithm = new HMASHA1();
var step1 = Encoding.UTF8.GetBytes(pwd);
var step2 = hashAlgorithm.ComputeHash(step1);
var step3 = BinaryToHex(step2);

И на шаге 3 получается что-то вроде этого "AD626B9D42073B299ECFC664CCB7A8B01F3AF726", которое похоже на то, как выглядят пароли вXML-файл пользователя для старого приложения.

Мне просто любопытно, если я использую этот метод хеширования (который работает в ядре .net), сможет ли хешированные пароли быть "проверены" с помощью FormsAuthentication?

Myтесты пока не работают.Есть идеи?Я делаю это неправильно?

РЕДАКТИРОВАТЬ: это не HMASHA1, это SHA1Cng - который я не могу использовать, потому что он находится в System.Core в .net framework 4. что-то ... что я могу использоватьсделать это в .net core?

1 Ответ

0 голосов
/ 28 декабря 2018

Я понял, это работает:

using System.Security.Cryptography;

var sha1 = SHA1.Create();
var step1 = Encoding.UTF8.GetBytes(pwd);
var step2 = sha1.ComputeHash(step1);
var step3 = BinaryToHex(step2);   

BinaryToHex и связанные с ним функции скопированы из System.Web.Security.Cryptography.CryptoUtil

Все равно хотелось бы сделать это в обратном порядкеи расшифровывать пароли.

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