Skip to content
BlockchainSign
pt

Como verificar um hash sozinho

Por Publicado a

Como verificar um hash sozinho
Photo: Al Nahian

Verificar um hash é uma operação de trinta segundos com ferramentas já presentes no seu computador. É também o passo que transforma "disseram-me que coincide" em "eu verifiquei".

Os comandos

macOS e Linux

shasum -a 256 nomeficheiro

ou, na maioria das distribuições Linux:

sha256sum nomeficheiro

Windows

certutil -hashfile nomeficheiro SHA256

PowerShell

Get-FileHash nomeficheiro -Algorithm SHA256

Num browser — o gerador gratuito de hash SHA-256 deste site. Utiliza a Web Crypto API, executa-se inteiramente na sua máquina e funciona com a ligação à internet desligada. Esta última propriedade é a essência: pode confirmar que nada está a ser carregado ao desligar o cabo.

Todos estes produzem a mesma cadeia hexadecimal de 64 caracteres para os mesmos bytes. Se duas ferramentas discordarem, uma delas está a calcular o hash de algo diferente.

Comparar sem perder a vista

Uma cadeia de 64 caracteres é fácil de ler rapidamente e cometer erros. Alguns hábitos mais seguros:

  • Compare os primeiros seis e os últimos seis caracteres para uma verificação rápida, depois cole ambos num editor de texto para uma comparação completa quando for importante.

  • Deixe a máquina fazê-lo. No macOS ou Linux:

    [ "$(shasum -a 256 ficheiro.pdf | cut -d' ' -f1)" = "hash_esperado_aqui" ] && echo MATCH || echo DIFFERENT
    
  • Atenção às maiúsculas e minúsculas. A saída hexadecimal é insensível a maiúsculas/minúsculas no significado, mas as ferramentas diferem no que imprimem. Converta ambas para minúsculas antes de comparar.

Quando o hash não coincide

Uma divergência significa que os bytes são diferentes. Isso é tudo o que significa, e as causas habituais são banais.

O ficheiro foi guardado novamente. Abrir um documento e guardá-lo novamente reescreve-o — frequentemente com uma nova data de modificação embutida, ou numa passagem de compressão diferente. O conteúdo parece idêntico, mas os bytes não são.

Foi exportado em vez de copiado. Um PDF exportado duas vezes da mesma fonte é geralmente dois ficheiros diferentes.

A transferência alterou-o. Algumas ferramentas "corrigem" amavelmente as quebras de linha em ficheiros de texto, convertendo entre LF e CRLF. Isso altera cada linha.

Calculou o hash da coisa errada. Calcular o hash de uma pasta, de um atalho ou de um zip que reconstruiu em vez do ficheiro original. Reconstruir um zip quase nunca reproduz os bytes originais, porque as marcas temporais e a ordem estão armazenadas no interior.

Há realmente um erro. Raro, mas é a razão pela qual a verificação existe.

A lição em todos estes casos: arquivar o ficheiro exato que certificou e trabalhar numa cópia. Um registo temporal cobre bytes, não significado.

Por que "verifique o utilizador mesmo" não é um slogan

Há uma razão específica para insistir nisso em vez de aceitar um visto verde num website.

Uma página de verificação que não escreveu, a correr num servidor que não controla, a mostrar um resultado que não pode reproduzir, é uma afirmação. Acontece ser verdadeira na maioria dos casos, e continua a ser uma afirmação. Quando o registo importa — uma disputa, uma auditoria, uma reivindicação — quer uma verificação que não passe pela parte interessada na resposta.

Esse é também o padrão que nós próprios seguimos. A nossa página de verificação explica cada verificação com uma nota "como fazer isto o utilizador mesmo" ao lado, porque uma ferramenta de verificação que não possa ser substituída por três comandos de shell está a fazer algo que não deveria precisar de fazer.

O que prova um hash coincidente

Que dois ficheiros são byte a byte idênticos. Nada mais, e isso é muito.

Não lhe diz de onde veio nenhum dos ficheiros, quem o criou ou quando — isso vem da evidência circundante. Num certificado de registo temporal, o hash é a ligação entre o seu ficheiro e um registo público datado; isoladamente, é uma impressão digital sem data associada.

Para saber o que é um hash e como funciona, veja o que é um hash SHA-256.

Perguntas frequentes

Como verifico um hash SHA-256 no Windows?
Utilize certutil -hashfile nomeficheiro SHA256 numa linha de comandos, ou Get-FileHash nomeficheiro -Algorithm SHA256 no PowerShell. Ambos produzem o mesmo valor de 64 caracteres que shasum -a 256 fornece no macOS e Linux, pois estão a calcular a mesma função sobre os mesmos bytes.
Porque é que o meu hash não coincide com o certificado?
Quase sempre porque o ficheiro mudou. Guardar novamente um documento, exportá-lo outra vez, reconstruir um ficheiro zip, ou uma transferência que converteu quebras de linha, produzem bytes diferentes apesar de parecerem idênticos. Arquivar o ficheiro exato que certificou e trabalhar numa cópia.
O hashing num browser é tão fiável quanto a linha de comandos?
Sim, quando utiliza a Web Crypto API, que é a mesma implementação padrão que a plataforma fornece. A nossa ferramenta produz saída byte a byte idêntica à do shasum -a 256, e funciona com a sua ligação desligada — o que é uma forma conveniente de confirmar que nada está a ser carregado.

Prove hoje que o seu trabalho já existia

Crie um registo temporal de qualquer ficheiro na blockchain Ethereum e receba um certificado inviolável e vitalício. O seu ficheiro nunca sai do seu navegador.