Armazenar um hash SHA512 senha no banco de dados
-
11-09-2019 - |
Pergunta
Na minha aplicação web ASP.NET estou hash minhas senhas de usuários com SHA512.
Apesar de muita SO'ing e pesquisando estou claro como eu deveria estar armazenando-os no banco de dados (SQL2005) - O código abaixo mostra o básico de como eu estou criando o hash como uma string e atualmente estou inserindo -lo para o banco de dados em uma coluna CHAR (88), como que parece ser o comprimento criado consistentemente
É segurando-o como uma String a melhor maneira de fazê-lo, se assim for vai ser sempre 88 caracteres em um SHA512 (como eu já vi algumas coisas bizarras no 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))
Solução
SHA512 saídas 512 bits, ou 64 bytes. Você pode armazenar esses 64 bytes em uma coluna binária, se assim o desejasse.
Se você deseja manipular o hash fora de seu aplicativo é mais confortável para armazenar uma string Base64, como você está fazendo agora. Base64 acrescenta cerca de um 33% de sobrecarga constante, então você pode esperar a corda sempre ser 88 caracteres.
Dito isso, ASP.NET tem um bastante abrangente sistema de autenticação embutida, o que você deve usar.