хэш md5 отличается при разбиении файла, опять кошка

1399
random

Вот выдержка из команд, которые я выполнил как я, 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
Потому что у MD5 все еще есть небольшой шанс не создавать столкновения: P 14 лет назад 4
Я хотел бы увидеть вывод 2 команд: 1. `ls -l bt4 *` 2. `cmp bt4 *` Laurence Gonsalves 14 лет назад 1

6 ответов на вопрос

14
hobbs

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

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

+1 Я только что заметил `-t`, но ты избил меня до ответа. Laurence Gonsalves 14 лет назад 0
5
Chris Jester-Young

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

3
ChrisInEdmonton

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

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

да, может быть, "ls -t" не так хорош. следует заказывать в алфавитном порядке. Thilo 14 лет назад 0
3
YOU

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

3
Schof

Потому что вы не соединяете их в том же порядке, в котором они начали. Вы правы, если вы правильно их соберете, 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. 
0
Alan Haggai Alavi

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

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