O que esta ferramenta faz
Calcula o hash SHA-256 de qualquer texto ou ficheiro no teu navegador, devolvendo um digest hexadecimal de 64 caracteres. O SHA-256 é o cavalo de batalha do hashing criptográfico moderno: 256 bits de saída, parte da família SHA-2 (FIPS 180-4), desenhado pela NSA e publicado em 2001. Após mais de duas décadas de escrutínio público, não se conhece nenhum ataque prático de colisão sobre o SHA-256. É o defeito correto para quase qualquer código novo que precise de um hash criptográfico.
Onde o SHA-256 está em uso
- Certificados TLS. Cada certificado HTTPS emitido hoje carrega uma assinatura SHA-256 (ou mais forte).
- Digests de imagens de container. Docker, OCI e Kubernetes usam SHA-256 para identificar imagens de forma única. A notação
@sha256:abc...em referências de imagem é exatamente isto. - Hashes de blocos e IDs de transações Bitcoin. A proof-of-work do Bitcoin é SHA-256 aplicado duas vezes; cada transação é identificada pelo seu digest SHA-256.
- Subresource Integrity (SRI).
<script integrity="sha256-...">diz ao navegador para recusar o script se o hash não corresponder. - Verificação de releases de software. Quando um projeto publica um download juntamente com um checksum SHA-256, é o que se espera.
- Próximo formato de objetos do git. O git 2.29+ suporta SHA-256 como alternativa ao SHA-1 para novos repositórios.
- Assinaturas JWT (HS256, RS256, ES256). O "256" nesses nomes de algoritmos é SHA-256.
Quando escolher SHA-256 em vez de SHA-512
- Compatibilidade. Quase todos os sistemas que aceitam um hash aceitam SHA-256. SHA-512 é bem suportado mas não universal.
- Tamanho da saída. O SHA-256 cabe em 32 bytes, o SHA-512 em 64 bytes. Para aplicações sensíveis ao armazenamento (colunas de base de dados, parâmetros de URL, campos de certificado), o SHA-256 ocupa metade.
Escolhe SHA-512 quando estiveres a fazer hash de muitos gigabytes de dados numa máquina de 64 bits — o SHA-512 opera nativamente em palavras de 64 bits e pode ser marginalmente mais rápido apesar do digest maior.
Quando o SHA-256 não é a ferramenta certa
- Armazenamento de palavras-passe. Mesmo aviso que para os outros hashes rápidos: usa bcrypt, scrypt ou Argon2. O SHA-256 é demasiado rápido — um GPU moderno calcula milhares de milhões por segundo.
- Autenticação de mensagens. Usa HMAC-SHA-256, não SHA-256 só.
HMAC(chave, mensagem)é a construção; o SHA-256 sozinho não recebe uma chave. - Derivação de chaves. Usa HKDF ou PBKDF2-SHA-256, não SHA-256 só. Fazer hash direto de uma palavra-passe para uma chave é inseguro.
Vetores de teste
Vetores de teste canónicos do SHA-256, do FIPS 180-4:
- String vazia
""→e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 "abc"→ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"→248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"The quick brown fox jumps over the lazy dog"→d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
Notas
Porquê 64 caracteres? O SHA-256 produz 256 bits = 32 bytes = 64 caracteres hex.
Esta implementação é constant-time? Sim — usa o crypto.subtle.digest do WebCrypto do navegador, que a plataforma expõe como primitiva nativa de tempo constante. Não há early-exit baseado nos dados de entrada que possa vazar timing.
Limites de tamanho de ficheiro? O seletor de ficheiros faz hash até 256 MB localmente. Ficheiros maiores são tecnicamente possíveis mas lentos na thread principal; para esses, prefere sha256sum num terminal.
Porque é que o meu SHA-256 difere do sha256sum? Newline final. echo "hello" | sha256sum adiciona \n; colar "hello" aqui não. Usa echo -n ou o seletor de ficheiros para correspondência byte a byte.
Ferramentas relacionadas
- Gerador de hashes — todos os cinco hashes lado a lado
- SHA-512 — mesmo nível de segurança, digest mais longo, mais rápido em CPUs de 64 bits
- SHA-1 — predecessor, descontinuado para segurança
- Base64 — codifica um digest binário para transporte (por exemplo, atributos SRI)