Como arquivos de zero byte podem gerar um valor hash?

Como arquivos de zero byte podem gerar um valor hash?

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

QuickHash no Linux

Comandos de terminal

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 1bit, quantos 0bits 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, da39a3ee5e6b4b0d3255bfef95601890afd80709você 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).

informação relacionada