Como um arquivo de texto de zero byte pode gerar um hash quando hash com sha1sum, sha256sum etc? Quais dados os programas estão fazendo hash para gerar um valor de hash?
Ta
Responder1
Algoritmos hash leem a entrada e a processam, independentemente de haver dados. Este é um comportamento válido e desejado e é usado até para verificar se uma determinada implementação está correta. Isso leva a "hashes nulos" para todos os principais algoritmos.
Resumindo: da39a3ee5e6b4b0d3255bfef95601890afd80709 é o hash sha1 para um arquivo vazio em qualquer lugar, o mesmo acontece com os hashes nulos de outros algoritmos.
Responder2
Todos os algoritmos de hash no Quick Hash sãoConstruções Merkle – Damgård. Como tal, eles preenchem a mensagem com um múltiplo do tamanho do bloco.
Os algoritmos do Quick Hash conseguem isso anexando um 1
bit, quantos 0
bits forem necessários e, finalmente, o comprimento da mensagem.
Isso permite hash de mensagens de comprimento arbitrário, incluindo mensagens de comprimento zero.
Responder3
(Complemento para a resposta de Dennis e fixer1234?)
Sucintamente:
$ shasum -a 256 /dev/null e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null
Todos os arquivos de 0 byte terão a mesma soma de verificação.
$ shasum -a 512 /dev/null cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null
$ shasum /dev/null da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null
$ md5 /dev/null MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e
(nota: o MD5 está quebrado; não é um 'hash seguro'. Isso está documentado na entrada MD5 na Wikipedia.)
Assim, por exemplo, se você estiver tentando verificar a inocuidade dos arquivos emvírustotal.comcom um dos valores de hash seguros listados aqui, por exemplo, da39a3ee5e6b4b0d3255bfef95601890afd80709
você pode ter certeza de que o arquivo realmente tinha 0 bytes (ou era uma pasta que o virustotal, de maneira confusa, faz hash como se fosse um arquivo de 0 bytes).