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