ASP.NET хэширует PW's + Salt Confusion - PullRequest
       9

ASP.NET хэширует PW's + Salt Confusion

2 голосов
/ 03 февраля 2010

Я слежу за статьей MSDN, расположенной здесь: http://msdn.microsoft.com/en-us/library/aa302398.aspx

Моя путаница связана с функцией:

private static string CreatePasswordHash(string pwd, string salt)
{
  string saltAndPwd = String.Concat(pwd, salt);
  string hashedPwd = 
        FormsAuthentication.HashPasswordForStoringInConfigFile(
                                             saltAndPwd, "SHA1");
  hashedPwd = String.Concat(hashedPwd, salt);
  return hashedPwd;
}

Насколько я понимаю, что: 1. Конкат соль и равнинаtext pwd 2. создал хэшированный проход, используя sha1 3. Конкататируйте соль еще раз с хэшированным pwd, в котором изначально была соль ???

В чем причина шага 3?Я нашел функцию, идентичную функции MSDN, где она опускает последний конкат.

Я просто не понимаю, почему в версии MSDN есть последняя операция concat.

1 Ответ

3 голосов
/ 03 февраля 2010

Он хранит соль с хешированным паролем, так что вы можете просто извлечь все это из файла конфигурации (или где бы вы его не сохранили), взять соль с конца, хэшировать входящий пароль и сравнить результаты на хешированный пароль из конфигурации. Если вы не сохраните соль с хешированным паролем в конфигурации, вам придется хранить ее где-то еще и извлекать ее оттуда, чтобы хэшировать входящие пароли при выполнении теста. Поскольку SHA1 - это фиксированные 160 бит (20 байт), легко получить соль, просто пропустив первые 20 символов в хешированном пароле в конфигурации.

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