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

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

Несмотря на много SO'ing и Googling, я не понимаю, как я должен хранить их в базе данных (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 имеет довольно полную систему аутентификации, которую вы должны использовать.