Você está na página 1de 3

Explicação SHA256

O que é o SHA256?
O SHA-256 (Secure Hash Algorithm 256 bits) é uma função de hash criptográfico
amplamente utilizada para gerar resumos (hashes) de mensagens de comprimento
variável. O algoritmo SHA-256 produz um hash de 256 bits (32 bytes) para uma entrada
de qualquer tamanho. Esses hashes são frequentemente usados em criptografia e
segurança da informação para verificar a integridade dos dados, autenticar mensagens e
proteger informações confidenciais. Quando transformado em hash, não será
descodificado, é uma via única.

Como funciona o SHA256?

Codificação
O SHA 256 começa recebendo uma mensagem para ser codificada, após receber essa
mensagem ele precisa que já tenhamos pronto as 64 DWords constantes e mais uma hash
inicial de 8 DWords. Sendo que uma DWord são 32 bits e elas são geradas com base nos
primeiros 64 números primos. Para o hash inicial de 8 DWords nós pegamos os primeiros 8
números primos, fazemos a raiz quadrada e multiplicamos a fração resultante por
0xFFFFFFFF, pegamos a parte inteira e transformamos com a notação hexadecimal, assim
temos a primeira DWord do H. Para as constantes K fazemos o mesmo processo só que a
diferença é que tiramos a raiz cubica.
Recebemos a mensagem, descobrimos o tamanho dela em bytes e colocamos 1 byte de
valor fixo 0x80 no final da mensagem, e colocamos o padding de zeros para completar a
mensagem até os 56 bytes, pois o total tem que ter 64 bytes. Sendo que apenas no último
Frame os últimos 8 bytes são reservados para o tamanho da mensagem em bits.

Caso a mensagem seja maior que os 56 bytes contando o byte de controle, será
necessário mais um frame para o tamanho, sendo nesse próximo frame teria apenas o
padding e o tamanho da mensagem. O que define que a mensagem pode ter tamanho
máximo de 2^64 bits.

A mensagem gera as DWords, que vão da 0 a 15 DWord em mensagem, com o tamanho


e o byte de controle. Para gerar as outras DWords do 16 ao 63, ele vai usar a nossa
mensagem inicial, pegando a DWord índice - 16 + a DWord índice - 7 + a primeira rotação +
a segunda rotação. A primeira rotação é feita pegando a DWord do índice e rotacionando
ela em sete bits para a direita, o primeiro passa a ser o segundo, o segundo o terceiro e
assim por diante, depois faz uma rotação em 18 bits e após isso pega os 3 últimos e pula
para direita (perde os 3 últimos) e os 3 bits iniciais passam a ser 0. Para a segunda rotação é
a mesma regra mas com valores diferentes na função.

Após isso o algoritmo vai embaralhar tudo, juntando com as nossas constantes que são
nosso K, vai fazer um loop de 64 vezes para fazer o embaralhamento e as somatórias. Após
fazer as contas iremos pegar o nosso H, que seria o nosso hash inicial , e para cada posição
iremos somar ao hash inicial os valores que geramos no nosso embaralhamento. Então é
retornado os valores do hash e a mensagem está criptografada.

Você também pode gostar