Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
Escreva ou cole alguma coisa e receba o SHA-256 dela: sessenta e quatro caracteres hexadecimais, calculados com a implementação criptográfica que o próprio navegador traz. É o hash a usar hoje quando a pergunta é de integridade, e esta página calcula sem que o texto saia do seu aparelho — o que importa, porque o que se manda para um hash costuma ser justamente o que não convém mover.
Onde roda
Nada é enviado, porque não há arquivo — a conta é feita nesta página.
Sem fila, sem conta
Responde na velocidade da sua máquina e nunca pergunta quem você é.
Quantas vezes quiser
Nada é contado nem limitado — responder de novo não nos custa nada.
O SHA-256 é o hash padrão de quase tudo que foi desenhado nos últimos quinze anos: certificados TLS, assinatura de pacotes, Bitcoin, os atributos de integridade que o navegador usa para conferir um script. Não há ataque prático conhecido contra ele e a margem diante dos teóricos é larga.
A escolha não é de gosto e sim de interoperabilidade. Mesmo que o SHA-512 seja mais rápido em hardware de 64 bits, o SHA-256 é o valor que o resto dos sistemas espera, e coincidir com o que o outro lado espera vale mais do que uma margem que ninguém vai alcançar.
Um hash mais longo soa como mais proteção e, na faixa em que o SHA-2 trabalha, não é. Contra colisão vale metade do comprimento em bits — 128 no SHA-256 —, e 2^128 tentativas ficam fora do que a energia e o tempo disponíveis no universo conhecido permitem.
Por isso a escolha entre os dois é prática: o SHA-512 corre mais em máquinas de 64 bits, o SHA-256 é o que todo o resto espera. A menos que você esteja processando volumes enormes de dados, o critério certo é com quem você precisa se entender.
Esta conta usa o `crypto.subtle`, a implementação que já vem no navegador e que está auditada e otimizada — a mesma que ele usa para conferir o certificado de cada página que você abre. Nenhuma versão própria de SHA-256 foi escrita aqui.
É uma decisão deliberada. Um hash implementado na mão pode passar em todos os vetores de teste e ainda assim ter um defeito num caso de borda, e um hash sutilmente errado é pior do que nenhum porque parece certo. Onde o navegador oferece a primitiva, a do navegador é a que se usa.
O SHA-256 são 256 bits, escritos como 64 dígitos hexadecimais. O comprimento é sempre o mesmo, independentemente do tamanho da entrada, porque um hash resume para tamanho fixo.
Isso serve para identificar um valor de relance: 32 caracteres são MD5, 40 são SHA-1 e 64 são SHA-256. Se algo rotulado como SHA-256 tem outro comprimento, o rótulo está errado — o que acontece bastante em documentação herdada.
Uma ferramenta Unix escreve uma quebra de linha no fim de um arquivo; um campo de texto não escreve. O SHA-256 de um arquivo com uma palavra dentro difere por completo do SHA-256 dessa palavra digitada aqui — por completo, porque um hash não dá pontos parciais e um único byte a mais muda todos os caracteres do resultado.
Quem estiver conferindo contra o `sha256sum` deveria testar isso antes de testar a codificação. As duas causas parecem idênticas — dois valores sem nada em comum — e as duas se descartam em um minuto, enquanto procurar um suposto defeito de implementação custa uma tarde.
O hash é calculado sobre bytes, e o texto vira bytes em UTF-8. Um `ç` são dois bytes; em Latin-1 teria sido um. Dois programas que mostram o mesmo texto na tela podem estar gerando hash de sequências de bytes diferentes.
Quando dois valores não fecham e a entrada tem acento, cedilha ou qualquer caractere fora do ASCII, esse é o primeiro lugar para olhar. O hash não está errado em nenhum dos dois lados: eles estão resumindo coisas diferentes.
Um hash diz que dois conteúdos são iguais. Ele não diz quem os produziu nem impede que alguém troque o conteúdo e também o hash publicado ao lado. Para isso é preciso uma assinatura, que acrescenta uma chave que só o emissor tem.
Daí que um checksum publicado na mesma página do arquivo protege contra um espelho defeituoso mas não contra alguém que controle a página. Quando o que importa é a procedência e não só a integridade, a resposta é assinatura — HMAC se a chave é compartilhada, assinatura assimétrica se não é.
Trocar MD5 por SHA-256 num armazenamento de senha melhora quase nada. O problema do MD5 para senha nunca foi a colisão e sim a velocidade, e o SHA-256 também foi desenhado para ser rápido: uma placa de vídeo comum testa bilhões de candidatos por segundo contra ele igualmente.
A família certa é outra, e é a de sempre: bcrypt, scrypt ou Argon2, cujo custo em tempo e em memória é ajustável de propósito. O SHA-256 aparece dentro delas como peça, o que confunde — mas ser uma peça de um esquema de senha não é a mesma coisa que ser um esquema de senha.
Todo certificado TLS que o seu navegador aceita hoje é assinado sobre um SHA-256. Os pacotes que um gerenciador instala são conferidos por ele, os blocos do Bitcoin são encadeados por ele, e o atributo `integrity` de uma tag de script no HTML carrega um SHA-256 em Base64.
É útil saber porque explica o formato em que ele aparece. O mesmo valor é escrito em hexadecimal num checksum de download e em Base64 num atributo de página, e são os mesmos 32 bytes nos dois casos — a diferença é de notação, não de algoritmo.
Para arquivo há neste site uma página de checksum com área de arrastar, e ela responde outra pergunta: se um download chegou intacto. Esta responde qual é o hash de um valor — um campo de banco, um payload antes de assinar, um identificador que precisa sair sempre igual.
Colocar as duas coisas numa página só deixaria cada visitante com metade da interface sobrando. O algoritmo é o mesmo e sai da mesma criptografia embutida; o que muda é a pergunta, e por isso mudam as páginas.
Comparar digests com o operador de igualdade de uma linguagem costuma parar na primeira diferença, e isso significa que a comparação demora um pouco mais quando o começo dos dois valores coincide. Com muitas tentativas, essa diferença de tempo vaza a informação de quantos caracteres iniciais estão certos.
Onde o hash está sendo comparado com um valor secreto — um token de webhook, uma assinatura HMAC — a comparação precisa ser de tempo constante, e as bibliotecas de criptografia oferecem uma função pronta para isso. Onde ele é comparado com um checksum público, isso não importa: não há segredo cujo tempo de comparação possa vazar.
É comum hashear um e-mail ou um CPF acreditando que isso anonimiza. Não anonimiza: quando o conjunto de entradas possíveis é pequeno ou previsível, o hash é revertido testando as entradas, e um CPF tem menos de um bilhão de valores possíveis. A LGPD só considera anonimizado o dado cuja anonimização não pode ser revertida com esforço razoável.
A parte que esta página resolve é que a conta acontece na sua máquina, então nem o valor original nem o hash são compartilhados conosco. É o que permite usá-la com dado real; o que ela não muda é a natureza do resultado.
Na prática, não: contra colisão valem 128 bits no SHA-256, e esse número está fora do alcance de qualquer computação imaginável. O SHA-512 é mais rápido em máquinas de 64 bits; o SHA-256 é o que todo o resto espera.
Não de forma direta. O que se faz é testar candidatos, e por isso gerar hash de um valor de conjunto pequeno e previsível — um e-mail, um CPF — não o protege de verdade.
O mais provável é a quebra de linha final do arquivo, que um campo de texto não tem. Um único byte muda o hash inteiro. A segunda causa é a codificação do texto.
Não. Um hash diz que dois conteúdos coincidem, não quem os produziu, e quem consegue trocar o arquivo normalmente também troca o hash publicado. Para procedência é preciso HMAC ou uma assinatura assimétrica.
Não. Ele é calculado com a criptografia embutida do navegador, nesta página. O painel de rede confirma isso enquanto você digita.