Хранение хеша пароля SHA512 в базе данных
-
11-09-2019 - |
Вопрос
В своем веб-приложении ASP.NET я хеширую пароли пользователей с помощью SHA512.
Несмотря на множество SO и поиск в Google, я не понимаю, как мне следует хранить их в базе данных (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))
Решение
SHA512 выводит 512 бит или 64 байта.При желании вы можете сохранить эти 64 байта в двоичном столбце.
Если вы хотите обрабатывать хэш вне вашего приложения, удобнее хранить строку Base64, как вы это делаете сейчас.Base64 добавляет примерно 33% постоянных издержек, поэтому можно ожидать, что длина строки всегда будет 88 символов.
Тем не менее, ASP.NET имеет довольно комплексная система аутентификации встроенный, который вам следует использовать.