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))
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top