Хранение хэша пароля 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 имеет достаточно всеобъемлющую систему аутентификации, которую вы должны использовать.