Como um arquivo de texto de zero byte gera um hash quando hash com sha1sum, sha256sum etc? Quais dados os programas estão fazendo o hash para gerar um valor de hash?
Ta
Os algoritmos de hash leem a entrada e a processam, independentemente de haver dados. Esse é 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.
Para resumir: da39a3ee5e6b4b0d3255bfef95601890afd80709 é o sha1-hash para um arquivo vazio em qualquer lugar, o mesmo se aplica aos hashs nulos de outros alrogritmos.
Todos os algoritmos de hash no Quick Hash são construções de Merkle – Damgård . Como tal, eles colocam a mensagem em um múltiplo do tamanho do bloco.
Os algoritmos do Quick Hash conseguem isso anexando um
1
bit, quantos0
bits forem necessários e, finalmente, o tamanho da mensagem.Isso permite mensagens de tamanho arbitrário, incluindo mensagens de tamanho zero.
fonte
(Complemento à 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
(observação: o MD5 está quebrado; não é um 'hash seguro'. Isso está documentado na entrada MD5 da Wikipedia.)Assim, por exemplo, se você está tentando verificar a inocência de arquivos em virustotal.com com um dos valores seguros de hash listados aqui, por exemplo
da39a3ee5e6b4b0d3255bfef95601890afd80709
, pode ter certeza de que o arquivo era realmente 0 bytes (ou era uma pasta que confuso, hashes como se fosse um arquivo de 0 byte.)fonte