Генерация SHA1 на .net4 - PullRequest
       23

Генерация SHA1 на .net4

2 голосов
/ 08 ноября 2011

Я повторно использовал старый код и пришел, чтобы увидеть, что я использовал этот код для генерации хэша SHA1.

HashAlgorithm sha = new SHA1CryptoServiceProvider();
return sha.ComputeHash((new UnicodeEncoding()).GetBytes(password.Trim()));

Когда я использую следующий код для генерации хеша SHA1, я не получаю тот же хеш, что и при тестировании, например, http://gtools.org/tool/sha1-hash-generator/

Какой из них правильный?

Я что-то здесь не так делаю?

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

Скорее всего разница в кодировке. Вы используете UTF-16. Попробуйте использовать UTF-8.

Только что подтвердил, что этот сайт использует UTF-8. Но их код не работает для определенных символов, таких как ', потому что они вводят свои данные через экранирование sql.

Но хеширование пароля с простым SHA-1 почти никогда не является правильным выбором. В большинстве случаев, например, для хранения паролей, используемых для входа на ваш сайт, вы должны использовать надлежащие функции хеширования паролей, такие как PBKDF2, bcrypt или scrypt с соответствующей солью.

PBKDF2 реализован в .net в классе Rfc2898DeriveBytes

0 голосов
/ 08 ноября 2011

Пример посола SHA-1:

return Convert.ToBase64String(
    new HMACSHA1(
        Encoding.UTF8.GetBytes(salt))
    .ComputeHash(
        Encoding.UTF8.GetBytes(input)));
...