Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

Trabalhando com funções criptográficas (MD4, MD5, SHA1, SHA2_256 e SHA2_512) utilizando a função HASHBYTES do SQL Server

Post Views 10,376 views
Reading time 2 minutes

Olá pessoal,
Tudo em paz ?

Um pouco sobre codificação
Neste post irei demonstrar um pouco mais sobre a função HASHBYTES do SQL Server, que permite trabalhar com funções criptográficas baseadas em HASH, onde uma vez codificado, não é possível obter a string original novamente. Caso você queira saber mais sobre criptografia utilizando o algoritmo Base64, que permite codificar e decodificar uma string, acesse aqui.

A validação da string codificada se dá por meio de comparação, codificando novamente a string a ser testada e comparando o HASH recém gerado com o HASH original. Caso os HASH’s coincidam, a string testada é confirmada como verdadeira.

Essa forma de validação é considerada mais segura que a criptogrifia, uma vez que a complexidade da codificação é muito maior e dificulta ataques hackers para quebrar a string codificada. Embora seja um método bem seguro, já foi comprovada a existência de colisões, que são duas ou mais strings que geram um mesmo HASH, fazendo com que a sua segurança seja quebrada por uma string que diferente da original. A medida que a aumentamos a quantidade de bits da nossa criptografia, mais segura ela fica e demanda mais processamento para quebrá-la (e mais espaço para armazenar os HASH’s)

Nível de criptografia dos algoritmos:

  • 128 bits (16 bytes): MD2, MD4 e MD5
  • 160 bits (20 bytes): SHA e SHA1
  • 256 bits (32 bytes): SHA2_256 (SQL Server 2012 em diante)
  • 512 bits (64 bytes): SHA2_512 (SQL Server 2012 em diante)

A função HASHBYTES
Vamos colocar em prática tudo o que foi falado acima. Mãos à obra! A função de sistema HASHBYTES retorna o hash de MD2, MD4, MD5, SHA1 ou SHA2 (SQL Server 2012 em diante) de sua entrada no SQL Server.

Exemplo 1 – SHA1:

Exemplo 2 – MD5:

Exemplo 3 – SHA1 com dados de uma tabela:

Até a próxima!