Вопрос

В своем веб-приложении 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 имеет довольно комплексная система аутентификации встроенный, который вам следует использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top