Como os arquivos de byte zero podem gerar um valor de hash?

19

Como pode um arquivo de texto de zero bytes gerar um hash quando hash com sha1sum, sha256sum etc? Quais dados são os programas hash para gerar um valor de hash?

Ta

    
por Gizmo_the_Great 27.02.2013 / 00:03

3 respostas

20

Algoritmos hash lêem a entrada e a processam, não importa se há dados. Esse é um comportamento válido e desejado e é usado até mesmo para verificar se uma determinada implementação está correta. Isso leva a "hashes nulos" para todos os principais algoritmos.

Para resumir: da39a3ee5e6b4b0d3255bfef95601890afd80709 é o hash sha1 para um arquivo vazio em todos os lugares, o mesmo acontece com os hashes nulos de outros alocrogmos.

    
por 27.02.2013 / 00:19
14

Todos os algoritmos de hash no Quick Hash são construções de Merkle-Damgård . Assim, eles enviam a mensagem para um múltiplo do tamanho do bloco.

Os algoritmos do Quick Hash conseguem isso adicionando um 1 bit, quantos 0 bits conforme necessário e, finalmente, o tamanho da mensagem.

Isso permite mensagens hashing de tamanho arbitrário, incluindo mensagens de tamanho zero.

    
por 27.02.2013 / 00:43
1

(Add-on 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 do MD5 na Wikipedia.)

Assim, por exemplo, se você está tentando verificar a inocuidade dos arquivos em virustotal.com com um dos valores de hash seguros listados aqui , por exemplo da39a3ee5e6b4b0d3255bfef95601890afd80709 , então você pode ter certeza de que o arquivo era de fato 0 bytes (ou era uma pasta, o que tornava hashes e confusamente os hashes como se fosse um arquivo de 0 bytes).

    
por 29.03.2018 / 20:39

Tags