Почему конец -файла -и конец -входного сигнала --обрабатываются sha256sum по-разному?

Используйте другое программное обеспечение, обеспечивающее лучший обзор.

В строках ниже, начиная с #, означает выполнение как rootВо-первых, убедитесь, что это правильный диск !!!ВАЖНО!!! Если вы потеряете все данные из-за этих инструкций, вы сами по себе. Я бы использовал testdiskили photorec, чтобы восстановить то, что я могу.

# parted /dev/sdb
Model: Some disk model
Disk: /dev/sdb : 29.9GB
Sector Size: 512B/4096B
Partition Table: msdos
Disk Flags

Создать таблицу разделов и раздел подкачки

# parted /dev/sdb mklabel gpt #!!!ACHTUNG! This will erase ALL partitions on disk /dev/sdb!!!
# parted /dev/sdb mkpart primary linux-swap 512B 29.9GB
# parted print
Model: Some disk model
Disk: /dev/sdb : 29.9GB
Sector Size: 512B/4096B
Partition Table: mbr
Disk Flags
Number    Start    End    Size    File System    Name    Flags
 1        512B     29.9Gb 29.9Gb                 primary

Отформатировать раздел для подкачки

# mkswap /dev/sdb1

Если это не удается, вы, скорее всего, поймете, почему. Но судя по выходным данным dmesg, у вас поврежденное устройство.

Вам следует рассмотреть возможность использования smartctlдля проверки статуса SMART вашего накопителя. Для установки нужны smartmontools (debian, ubuntu, mint, devuan...)

8
10.10.2020, 16:25
1 ответ

Разница заключается в новой строке. Во-первых, давайте просто соберем sha256суммы abcиabc\n:

$ printf 'abc\n' | sha256sum 
edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb  -
$ printf 'abc' | sha256sum 
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  -

Итак, сумма ba...adотносится к строке abc, а сумма ed..cb— к abc\n. Теперь, если ваш файл дает вам вывод ed..cb, это означает, что в вашем файле есть новая строка. И, учитывая, что «текстовые файлы» требуют символа новой строки в конце, большинство редакторов добавят его для вас, если вы создадите новый файл.

Чтобы получить файл без новой строки, используйте подход printfвыше. Обратите внимание, как fileпредупредит вас, если в вашем файле нет новой строки:

$ printf 'abc' > file
$ file file
file: ASCII text, with no line terminators

И

$ printf 'abc\n' > file2
$ file file2
file2: ASCII text

А теперь:

$ sha256sum file file2
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  file
edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb  file2
28
18.03.2021, 22:58

Теги

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