MiServe DevTools

Os seus autocolantes

Fixe aqui as ferramentas. Ficam guardadas neste navegador.

Gerador de hash

Calcule os resumos MD5, SHA-1, SHA-2, SHA-3, BLAKE2 e CRC-32 de um texto ou de um ficheiro, todos de uma vez.

Algoritmos

Funciona no seu navegador com WebAssembly. Nada do que cola é enviado.

Sobre esta ferramenta

Para que serve um hash

Uma função de hash transforma uma entrada de qualquer tamanho num resumo curto de tamanho fixo. A mesma entrada dá sempre o mesmo resumo e, com as funções criptográficas desta página, basta alterar um único bit para obter um resumo que parece não ter qualquer relação com o primeiro. Isso faz de um resumo uma impressão digital: se dois resumos diferem, as entradas diferem, e se são iguais, as entradas são quase de certeza idênticas, sem ser preciso compará-las byte a byte.

Os usos típicos são verificar uma transferência com a soma de verificação indicada por quem a publica, detetar ficheiros duplicados ou alterados e construir chaves de cache.

Que algoritmo escolher

Para tudo o que diga respeito à segurança, use SHA-256, SHA-512, SHA-3 ou BLAKE2. O MD5 e o SHA-1 estão quebrados para fins de segurança, porque é possível produzir de propósito duas entradas diferentes com o mesmo resumo, mas continuam a ser comuns como simples somas de verificação. O CRC-32 não é um hash criptográfico e só deteta corrupção acidental.

Nenhuma destas funções serve para guardar palavras-passe, porque foram concebidas para ser rápidas. Para palavras-passe, use uma função lenta e com sal, como o bcrypt.

O SHA3-256 desta página é a função normalizada na FIPS 202. O Keccak-256 usado pelo Ethereum é anterior a essa norma e dá resumos diferentes para a mesma entrada.

Como os resumos são calculados e escritos

Os resumos são calculados pelos pacotes de hash do Go (a biblioteca padrão e, para o BLAKE2, golang.org/x/crypto) compilados para WebAssembly e executados num Web Worker, fora da thread principal da página. Os ficheiros são lidos em blocos de 8 MB, por isso um ficheiro grande é processado sem ser carregado inteiro em memória, e não sai do seu dispositivo.

Um resumo é uma sequência de bytes. hex e HEX escrevem cada byte como dois dígitos hexadecimais, e base64 escreve os mesmos bytes em Base64, a forma usada nos atributos de Subresource Integrity. O campo de comparação aceita qualquer uma das notações, com ou sem o nome do algoritmo à frente, como em sha256-… ou sha256:….

Perguntas

O meu ficheiro é enviado para calcular o hash?

Não. O ficheiro é lido pelo seu navegador e o hash é calculado no seu dispositivo. A ferramenta não o envia para lado nenhum, e a Content-Security-Policy do site não deixa a página ligar-se a nenhum outro servidor.

Porque é que o meu MD5 é diferente do que outra ferramenta me dá?

A causa habitual é uma entrada que difere de forma invisível: uma quebra de linha no fim, finais de linha do Windows, uma marca de ordem de bytes (BOM) ou outra codificação de texto. Esta ferramenta calcula o hash dos caracteres da caixa codificados em UTF-8 e não acrescenta nada. Uma quebra de linha na caixa é sempre um único line feed, por isso, para calcular o hash de um texto com finais de linha do Windows, guarde-o num ficheiro e calcule o hash do ficheiro.

É possível reverter um hash para obter o texto original?

Não. Uma função de hash descarta informação, por isso não há nada para decifrar. Ainda assim, entradas curtas ou comuns podem ser descobertas por tentativa e comparação, e é por isso que as palavras-passe precisam de uma função lenta e com sal.

Qual é a diferença entre SHA-2 e SHA-3?

São conceções diferentes, ambas normalizadas pelo NIST. O SHA-2, a família do SHA-256 e do SHA-512, é a escolha habitual há muito tempo. O SHA-3 assenta na construção em esponja Keccak e foi normalizado como alternativa de conceção diferente, para o caso de alguma vez se encontrar uma fraqueza no SHA-2. Ambos são hoje considerados seguros.

Mais ferramentas de Hash