Gerador de hash: MD5, SHA-1, SHA-256, SHA-512 e HMAC
Calcule hashes MD5, SHA-1, SHA-256, SHA-384 e SHA-512 ou HMACs de textos e arquivos no navegador e compare-os com um checksum esperado.
O hash é calculado sobre o texto exatamente como foi digitado, incluindo espaços e quebras de linha. As quebras de linha desta caixa são tratadas como LF.
Solte um arquivo aqui ou escolha um
Nenhum arquivo selecionado.
Este arquivo tem mais de 500 MB. O arquivo inteiro é carregado na memória, então o navegador pode ficar sem memória ou lento.
Resultados
Digite um texto ou escolha um arquivo para ver os hashes.
Valores hex são comparados sem diferenciar maiúsculas e minúsculas; valores Base64 precisam ser idênticos.
Observações
- MD5 e SHA-1 têm ataques de colisão conhecidos e não devem ser usados para fins de segurança. Use-os apenas em verificações que não envolvem segurança, como comparar um download com um checksum publicado.
- Um hash não é criptografia. Esta ferramenta não consegue transformar um hash de volta no texto ou arquivo original.
- Não use hashes simples para armazenar senhas. Use um esquema próprio para hash de senhas, como Argon2, scrypt ou bcrypt.
- Os hashes são calculados a partir dos bytes, então o mesmo texto com finais de linha diferentes (CRLF ou LF), outra codificação de caracteres ou espaços a mais gera um hash diferente.
- O HMAC combina um hash com uma chave secreta. O HMAC-MD5 não é oferecido aqui.
- Textos e arquivos são processados no seu navegador e não são enviados à LeedyBox. Arquivos muito grandes podem ser lentos, porque o arquivo inteiro é lido na memória.
Como usar
- Em "Entrada", escolha "Texto" para calcular o hash de um texto digitado ou colado, ou "Arquivo" para calcular o de um arquivo do seu dispositivo.
- Para um arquivo, escolha-o ou solte-o na caixa e clique em "Calcular hashes". Se depois mudar o "Modo HMAC" ou a chave, clique no botão novamente.
- Escolha um "Formato de saída": hex em minúsculas, hex em maiúsculas ou Base64. Mudar o formato só altera a forma de escrever os mesmos resultados, então nada é recalculado.
- Para calcular HMACs em vez de hashes simples, marque "Modo HMAC" e digite a chave secreta no campo que aparece. O HMAC-MD5 não é oferecido, então a linha do MD5 mostra "Indisponível para HMAC".
- Para verificar um download, cole o valor publicado em "Checksum esperado (opcional)". Ele é comparado com todos os resultados calculados, e a linha correspondente é marcada com "Confere".
Perguntas frequentes
Por que meu hash é diferente do que o sha256sum ou outra ferramenta mostra?
A caixa de texto calcula o hash exatamente dos caracteres digitados, então pequenas diferenças mudam o resultado. Uma causa comum é a quebra de linha no final: echo hello | sha256sum calcula o hash de "hello" mais uma quebra de linha, o que dá um SHA-256 diferente de "hello" sozinho, enquanto printf hello | sha256sum não a acrescenta. Caracteres que parecem iguais também podem estar armazenados de formas diferentes, por exemplo é como um único ponto de código ou como e seguido de um acento combinante. Para calcular o hash dos bytes exatos de um arquivo, use "Arquivo" em vez de colar o conteúdo, porque a caixa de texto codifica o texto como UTF-8 e trata as quebras de linha como LF.
O checksum publicado está correto. Então por que não confere?
Cole apenas o valor do hash. Espaços, tabulações e quebras de linha são removidos antes da comparação, então, se você colar uma linha inteira de um arquivo de checksums, o nome do arquivo passa a fazer parte do valor, e um prefixo como sha256: também impede a correspondência. Todos os algoritmos calculados são verificados, então não é preciso escolher um. Se só o valor foi colado e ainda assim não confere, verifique se o "Modo HMAC" está desativado e se o checksum usa MD5, SHA-1, SHA-256, SHA-384 ou SHA-512; outros algoritmos, como SHA-3 ou BLAKE2, não são calculados aqui. Caso contrário, o arquivo provavelmente é diferente daquele usado para gerar o checksum, por exemplo outra versão ou um download incompleto.
O que significa um resultado que começa com e3b0c442 ou d41d8cd9?
São os hashes de uma entrada vazia (0 bytes) escritos em hexadecimal: o valor SHA-256 começa com e3b0c442 e termina com b855, e o valor MD5 é d41d8cd98f00b204e9800998ecf8427e. Com o "Modo HMAC" desativado, eles aparecem quando você esvazia a caixa de texto ou com um arquivo de 0 bytes. Se um programa seu gerar um desses valores para dados que não deveriam estar vazios, ele provavelmente calculou o hash de uma string vazia ou de um arquivo vazio.
Posso verificar a assinatura de um webhook ou de uma API com o modo HMAC?
Muitas vezes, sim, se a assinatura for um HMAC com SHA-1, SHA-256, SHA-384 ou SHA-512; o HMAC-MD5 não é oferecido. Marque "Modo HMAC", digite o segredo de assinatura, use o corpo da requisição como entrada e cole a assinatura em "Checksum esperado (opcional)" sem um prefixo como sha256=; assinaturas em hex e em Base64 são reconhecidas. A entrada precisa ter os mesmos bytes que foram assinados, então um corpo JSON reformatado não vai conferir, e um corpo com quebras de linha CRLF precisa ser salvo como arquivo e processado em "Arquivo". Muitos serviços assinam mais do que o corpo, como um timestamp e um separador colocados antes dele, então confira na documentação do serviço o que exatamente é assinado.
Minha chave secreta está em hex ou Base64. Posso usá-la?
Só se o serviço usar o texto da chave como está. O campo "Chave secreta (UTF-8)" usa os bytes UTF-8 dos caracteres digitados e não decodifica hex nem Base64, então, se o serviço decodificar a chave antes de assinar, o HMAC calculado aqui não vai conferir. Espaços no início ou no fim do campo também fazem parte da chave.
Como crio um hash de Subresource Integrity (SRI)?
Escolha "Arquivo", selecione o script ou a folha de estilo, verifique se o "Modo HMAC" está desativado, clique em "Calcular hashes" e defina o "Formato de saída" como "Base64". Coloque sha384- antes do valor SHA-384 para obter o valor do atributo integrity; sha256- e sha512- funcionam da mesma forma. O arquivo precisa ter os mesmos bytes que o arquivo que o navegador baixa; caso contrário, o navegador se recusa a usá-lo. Um arquivo carregado de outra origem também precisa do atributo crossorigin, e o servidor dele precisa permitir CORS.
Qual é a diferença entre a saída em hex e em Base64?
As duas representam o mesmo digest. Hex usa dois caracteres por byte, 64 caracteres para SHA-256, e é o formato que ferramentas como o sha256sum mostram; Base64 é mais curto, 44 caracteres para SHA-256. A saída Base64 usa o alfabeto padrão com + e / e preenchimento =, e não a variante segura para URL com - e _, então um valor na variante segura para URL, ou sem o preenchimento =, pode não conferir na comparação.