md5 hash é diferente em um arquivo dividido, cat back again

2

Aqui está um trecho dos comandos que eu executei como split e, em seguida, cat um arquivo:

sh-3.2# split -b 600m bt4-final.iso 

sh-3.2# ls -hal
total 6132096
drwxr-xr-x   6 root   staff   204B Jan 12 19:59 .
drwxr-xr-x  13 alien  staff   442B Jan 12 19:54 ..
-rw-r--r--   1 root   staff   1.5G Jan 12 19:56 bt4-final.iso
-rw-r--r--   1 root   staff   600M Jan 12 19:58 xaa
-rw-r--r--   1 root   staff   600M Jan 12 19:59 xab
-rw-r--r--   1 root   staff   297M Jan 12 19:59 xac

sh-3.2# cat $(ls -t x*) > bt4-final-reasembled.iso

sh-3.2# ls
bt4-final-reasembled.iso    xaa          xac
bt4-final.iso               xab

sh-3.2# md5 bt4*
MD5 (bt4-final-reasembled.iso) = edd4f24f3abcabb8a447a69eaa30ff39
MD5 (bt4-final.iso) = af139d2a085978618dc53cabc67b9269

Por que o hash MD5 é diferente do que é essencialmente o mesmo arquivo?

    
por random 13.01.2010 / 02:49

6 respostas

14

Você está reunindo os arquivos na ordem errada, devido ao desnecessário ls -t .

cat x* > out.iso funcionaria bem e forneceria a saída correta. O POSIX garante que a globbing lhe dará arquivos na ordem de classificação.

    
por 13.01.2010 / 02:59
5

Você estava reconstituindo os arquivos na ordem errada. Com o uso de ls -t , os arquivos são listados primeiro (ou seja, último fragmento dividido, no seu caso) primeiro.

    
por 13.01.2010 / 02:59
3

Tem certeza de que está combinando-os na mesma ordem? Se você combiná-los em uma ordem diferente, certamente deve esperar que a soma MD5 seja diferente.

Se você os combinasse na mesma ordem, os bits seriam os mesmos e você obteria a mesma soma de md5. Se os bits não são os mesmos, provavelmente significa que sua RAM está ruim. Veja memtest86 .

    
por 13.01.2010 / 02:57
3

Eu acho, é por causa de ls -t , você está classificando por tempo, então último antes do primeiro no arquivo resamble

    
por 13.01.2010 / 03:00
3

Porque você não está colocando-os juntos novamente na mesma ordem em que eles começaram. Você está certo, se você remontá-los corretamente, o md5sum deve combinar. Aqui está um exemplo trivial:

$ cat > xaa
This is the first file
$ cat > xab
This is the second file
$ cat > xac
This is the third file.
$ cat $(ls -t x*) > final.txt
$ cat final.txt
This is the third file.
This is the second file
This is the first file

Tente isto:

$ cat x* > good.txt
$ cat good.txt
This is the first file
This is the second file
This is the third file.
    
por 13.01.2010 / 03:32
0

De alguma forma, alguns bits ficaram corrompidos, foram reordenados, foram adicionados ou foram removidos no processo de divisão e junção.

    
por 13.01.2010 / 02:58

Tags