Хранение хэша пароля SHA512 в базе данных - PullRequest
10 голосов
/ 02 декабря 2009

В моем веб-приложении ASP.NET я хэширую свои пароли пользователей с помощью SHA512.

Несмотря на большое количество SO и Googling, мне неясно, как я должен хранить их в базе данных (SQL2005) - приведенный ниже код демонстрирует основы того, как я создаю хеш в виде строки и в настоящее время вставляю он попадает в базу данных в столбец Char (88), так как кажется, что длина создается последовательно

Является ли использование этого в качестве строки лучшим способом сделать это, если так будет всегда на 88 SHA512 (как я видел некоторые странные вещи в Google)?

 Dim byteInput As Byte() = Encoding.UTF8.GetBytes(sSalt & sInput)
 Dim hash As HashAlgorithm = New SHA512Managed()
 Dim sInsertToDatabase As String =  Convert.ToBase64String(hash.ComputeHash(byteInput))

1 Ответ

15 голосов
/ 02 декабря 2009

SHA512 выводит 512 бит или 64 байта. Вы можете хранить эти 64 байта в двоичном столбце, если хотите.

Если вы хотите обрабатывать хэш вне вашего приложения, удобнее хранить строку Base64, как вы делаете сейчас. Base64 добавляет примерно 33% от постоянных накладных расходов, поэтому вы можете ожидать, что строка всегда будет иметь 88 символов.

Тем не менее, ASP.NET имеет встроенную систему аутентификации , которую вы должны использовать.

...