хеш md5 отличается на разделении файла, кошка назад снова

Вот выборка команд, которые я выполнил как я split и затем cat файл:

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

Почему случается так, что хеш MD5 отличается для того, каков по существу тот же файл?

2
задан 15.01.2010, 06:34

6 ответов

Вы - catting файлы вместе в неправильном порядке вследствие ненужного ls -t.

cat x* > out.iso сделал бы очень хорошо и дал бы корректный вывод. POSIX гарантирует, что globbing даст Вам файлы в отсортированном порядке.

14
ответ дан 08.12.2019, 04:34

Вы воссоздавали файлы в неправильном порядке. С использованием ls -t, файлы перечислены новейшие (т.е. в последний раз разделите блок в Вашем случае), сначала.

5
ответ дан 08.12.2019, 04:34

Вы уверены, что комбинируете их в том же порядке? При объединении их в другом порядке необходимо, конечно, ожидать, что сумма MD5 будет отличаться.

При объединении их в том же порядке биты были бы тем же, и Вы получили бы ту же сумму md5. Если биты не являются тем же, это, вероятно, означает, что Ваша RAM плоха. См. memtest86.

3
ответ дан 08.12.2019, 04:34

Я предполагаю, из-за ls -t, Вы сортируете ко времени, так продержитесь тот, прежде чем сначала в напомнят файл

3
ответ дан 08.12.2019, 04:34

Поскольку Вы не откладываете их вместе в том же порядке, в котором они запустили. Вы правы при повторной сборке их правильно md5sum должен соответствовать. Вот тривиальный пример:

$ 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

Попробуйте это:

$ cat x* > good.txt
$ cat good.txt
This is the first file
This is the second file
This is the third file.
3
ответ дан 08.12.2019, 04:34

Так или иначе некоторые биты стали поврежденными, были переупорядочены, были добавлены или были удалены в процессе разделения и возражения.

0
ответ дан 08.12.2019, 04:34

Теги

Похожие вопросы