Хранение хэша пароля SHA512 в базе данных

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

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

Является ли хранение в качестве String лучшим способом сделать это, если так будет всегда 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 ответ

Решение

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

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

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

Другие вопросы по тегам