Ferramentas para desenvolvedores · SHA calculadora de hash
Como SubtleCrypto.digest calcula um hash SHA-256 no navegador
· Como funciona
sha-256 criptografia APIs do navegador
Todo navegador moderno pode fazer hash de bytes nativamente por meio do Web Crypto. Esta postagem segue uma string do TextEncoder até crypto.subtle.digest para um resumo hexadecimal e explica as restrições de cada etapa.
Um hash sem instalação npm — as situações em que um resumo nativo supera uma biblioteca empacotada
Você pode calcular um resumo para um valor de texto curto sem instalar um pacote de hash ou postar dados em um site de hash remoto. Os navegadores expõem crypto.subtle.digest em origens seguras. Um hash é uma impressão digital determinística de bytes de comprimento fixo; não esconde a informação nem prova quem a forneceu. ToolAcre usa a implementação do navegador em vez de enviar um algoritmo SHA escrito à mão e mantém a string sendo hash na guia.
Texto não é bytes — codificando a entrada com TextEncoder para UTF-8 antes do hash e por que esta etapa decide a resposta
O texto “café” e os bytes inseridos em um hash não são o mesmo tipo de objeto. TextEncoder mapeia a string para UTF-8 bytes (63 61 66 C3 A9 para café), enquanto uma conversão ingênua de latim-1 teria usado E9 para o caractere final e produzido um resumo diferente. Mesmo texto visualmente idêntico pode ter diferentes formas de normalização Unicode. Combine a codificação e a normalização antes de comparar hashes entre JavaScript, um CLI e um servidor. O modo de texto de ToolAcre executa explicitamente sua conversão UTF-8 antes do hash.
A chamada digest — crypto.subtle.digest com um nome de algoritmo e um ArrayBuffer, e por que ela retorna uma promessa
crypto.subtle.digest("SHA-256", bytes) retorna uma promessa porque o trabalho criptográfico pode ser assíncrono; aguarde antes de ler a saída. O método utiliza todo o buffer de entrada em vez de um iterador de streaming. SHA-256 emite 256 bits (32 bytes) independentemente de a entrada ter três caracteres ou três milhões. A restrição de contexto seguro significa que HTTPS ou localhost é necessário para o SubtleCrypto API, e a ferramenta relata sua ausência em vez de inventar um substituto.
De ArrayBuffer para hexadecimal - transformando os bytes de resultado na string de caracteres 64 que as pessoas reconhecem
A promessa é resolvida para um ArrayBuffer de bytes, não para a familiar sequência de dígitos hexadecimais. Converta cada byte em dois caracteres base 16 com um zero à esquerda conforme necessário, produzindo exatamente 64 caracteres minúsculos para SHA-256. Esta representação hexadecimal dobra o comprimento de 32 bytes, mas não altera o resumo. Base64 poderia representar o mesmo 32 bytes de forma mais compacta; uma comparação só faz sentido depois de confirmar a correspondência do algoritmo, da codificação de entrada e da representação de saída.
Exemplo resolvido - hash de uma string curta passo a passo, mostrando os bytes em cada estágio
Para o texto abc ASCII, UTF-8 produz os bytes 61 62 63. SHA-256 desses bytes exatos é ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Teste isso em ToolAcre e em outra implementação de hash confiável: alterar abc para abc seguido por uma nova linha fornece um resultado diferente. Se as saídas forem diferentes, inspecione os espaços em branco ocultos e a codificação de bytes antes de suspeitar da primitiva criptográfica. O resumo exibido é um vetor de teste reproduzível, não uma afirmação de que abc é um segredo.
Contextos seguros — por que crypto.subtle está disponível apenas em HTTPS e localhost
crypto.subtle é um contexto seguro API. Uma página de produção HTTPS e uma página de desenvolvimento localhost geralmente expõem isso; uma página HTTP remota comum e insegura não pode. A ferramenta também precisa de memória suficiente para armazenar a entrada e a saída. Onde o Web Crypto não está disponível, mudar silenciosamente para um hash JavaScript não revisado faria com que um resultado sensível à segurança dependesse de uma implementação diferente. Falhe claramente e escolha um ambiente seguro.
O que isso não cobre - hashing chaveado (HMAC) e hash incremental de entradas muito grandes, que o resumo único API não fornece
O resumo único API não é hash incremental para arquivos grandes. SHA-256 não é um esquema de armazenamento de senhas: hashes rápidos sem sal tornam a adivinhação barata, portanto, o armazenamento de senhas precisa de um KDF criado especificamente para esse fim, com sal e deliberadamente caro. SHA-1 pode ser exibido para interoperabilidade legada, mas sua resistência à colisão está quebrada e não é uma boa escolha para novos sistemas de integridade ou assinatura. HMAC é autenticação com chave, não é a mesma operação que digerir bytes não autenticados.
Conclusão: o navegador já possui uma função hash - a calculadora hash ToolAcre SHA usa exatamente esta API, então sua saída é do próprio navegador
O navegador já fornece SHA-256: codifica o texto como bytes, aguarda o resumo e formata o resultado para comparação. A calculadora de hash ToolAcre SHA segue esse caminho para texto colado e rótulos SHA-1 como somente legado. Compare primeiro abc com o resultado conhecido e, em seguida, faça o hash do material não confidencial real cujos bytes e codificação você entende.