Como calcular um resumo SHA
Selecione texto ou ficheiro, algoritmo e codificação. O texto é codificado em UTF-8. Em ficheiro, os bytes exatos são lidos e enviados a SubtleCrypto.digest.
- Escolha Texto ou Ficheiro; ficheiro não é descodificado como texto.
- Use SHA-256 como opção moderna comum ou o algoritmo exato exigido pelo protocolo.
- Escolha Hex para checksums comuns ou Base64 quando o sistema esperar.
- Compare o resumo completo com fonte fiável; coincidência sozinha não autentica o publicador.
Exemplos e comportamento esperado
| Entrada | Saída | Observações |
|---|---|---|
| abc com SHA-1 | a9993e364706816aba3e25717850c26c9cd0d89d | Vetor conhecido, apenas para compatibilidade. |
| abc com SHA-256 | ba7816bf8f01cfea414140de5dae2223… | 256 bits equivalem a 64 carateres hexadecimais. |
| abc com SHA-384 | cb00753f45a35e8bb5a03d699ac6500… | 384 bits equivalem a 96 carateres hexadecimais. |
| abc com SHA-512 | ddaf35a193617abacc417349ae204131… | 512 bits equivalem a 128 carateres hexadecimais. |
| Olá 👋 em UTF-8 | Resumo determinístico | Bytes UTF-8 são usados, não unidades UTF-16. |
| Ficheiro local | Resumo dos bytes exatos | Um byte ou metadado interno diferente muda o resultado. |
Funções hash e determinismo
Uma função hash criptográfica converte qualquer tamanho em resumo fixo. A mesma sequência de bytes produz o mesmo resultado e uma mudança pequena deve alterar amplamente o resumo. Não é codificação reversível.
Determinismo serve para integridade, conteúdo, cache e builds. Também permite adivinhar segredos de baixa entropia por comparação; palavras-passe exigem funções lentas e com salt, não uma função SHA genérica.
- SHA-256 produz 32 bytes.
- Hex usa dois carateres por byte.
- Base64 representa os mesmos bytes de forma menor.
Escolha de algoritmo e SHA-1
SHA-256, 384 e 512 pertencem ao SHA-2. Use o algoritmo indicado pela fonte ou protocolo; não são intercambiáveis. Saída maior não corrige protocolo mal projetado.
SHA-1 permanece por sistemas antigos. Colisões práticas o tornam inadequado para novas assinaturas, certificados ou distribuição adversarial. Migre para SHA-256 ou construção aprovada.
- Não use SHA-1 contra atacantes capazes.
- Não adivinhe só pelo tamanho.
- HMAC é construção diferente com chave.
Codificação de texto e bytes de ficheiro
TextEncoder usa UTF-8 sem normalizar. Unicode, carateres invisíveis, espaços finais e CRLF/LF podem mudar os bytes embora o texto pareça igual. Outros sistemas com UTF-16 produzirão outro resumo.
File.arrayBuffer entrega o conteúdo exato. Nome, MIME e data não entram, salvo se estiverem dentro do ficheiro. Guardar novamente uma imagem ou um documento pode alterar metadados internos.
- Preserve quebras finais.
- Compare tamanho ao diagnosticar.
- Documente codificação e normalização.
Integridade e confiança
Coincidência indica bytes provavelmente iguais, mas não quem os criou. Se um atacante substituir ficheiro e checksum, hash simples não oferece autenticidade.
Obtenha o valor esperado por manifesto assinado, metadados fiáveis ou canal autenticado. Use HMAC para segredo partilhado e assinatura digital para autenticidade pública.
- Compare o resumo completo.
- Use comparação constante em código sensível.
- Armazene algoritmo junto ao valor.
Usos e diagnóstico
Serve para downloads, comparar exportações, registar artefatos, chaves de cache e vetores. Modo local evita upload e texto ajuda em normalização canónica.
Para reproduzir, registe entrada, algoritmo, codificação e normalização. Ao diferir, reveja tamanho, quebras, Unicode, compressão e metadados.
- Verificar checksums fiáveis.
- Comparar ficheiros locais.
- Testar vetores conhecidos.
- Diagnosticar UTF-8 versus outras codificações.
Limites e não objetivos
A API Web Crypto é obrigatória; se não estiver disponível, a operação falha. O ficheiro inteiro permanece em memória, pelo que ficheiros enormes exigem uma ferramenta nativa com processamento incremental.
Não quebra hashes, não encripta, não assina, não guarda palavras-passe nem consulta a reputação de malware. Produz apenas o resumo selecionado.
- Nenhum ficheiro é lido antes da seleção.
- Limpar não apaga caches do sistema.
- Use Argon2, scrypt ou bcrypt para palavras-passe.
Diferenças para HMAC e UUID
Hash não tem chave e qualquer pessoa pode reproduzir. HMAC adiciona segredo para autenticidade. UUID v4 identifica aleatoriamente e não depende do conteúdo.
Use hash para checksum, HMAC para autenticação partilhada, assinatura para verificação pública e UUID para identificadores.