Как проверить хеш-сумму файла linux

Обновлено: 21.11.2024

Контрольная сумма — это цифра, представляющая собой сумму правильных цифр в данных, которую можно использовать позже для обнаружения ошибок в данных во время хранения или передачи. Суммы MD5 (Message Digest 5) можно использовать в качестве контрольной суммы для проверки файлов или строк в файловой системе Linux.

Обычно очень сложно найти два разных файла с одинаковыми строками. Таким образом, вы можете использовать md5sum для проверки целостности цифровых данных, определяя, что загруженный вами файл или ISO является побитовой копией удаленного файла или ISO.

В Linux программа md5sum вычисляет и проверяет хеш-значения MD5 файла. Он входит в состав пакета GNU Core Utilities, поэтому он предустановлен в большинстве, если не во всех дистрибутивах Linux.

Посмотрите на содержимое /etc/group, сохраненное как groups.cvs ниже.

Приведенная ниже команда md5sums сгенерирует хеш-значение для файла следующим образом:

Когда вы пытаетесь изменить содержимое файла, удалив первую строку, root:x:0:, а затем запустите команду во второй раз, постарайтесь соблюдать хеш-значение:

Вы заметите, что значение хеш-функции теперь изменилось, указывая на то, что содержимое файла было изменено.

Теперь верните первую строку файла, root:x:0:, переименуйте ее в group_file.txt и выполните приведенную ниже команду, чтобы снова сгенерировать ее хеш-значение:

Из приведенного выше вывода видно, что хэш-значение остается прежним, даже если файл был переименован с исходным содержимым.

Важно: сумма md5 проверяет/работает только с содержимым файла, а не с именем файла.

Файл groups_list.txt является дубликатом groups.csv, поэтому попробуйте одновременно сгенерировать хэш-значение файлов следующим образом.

Вы увидите, что они оба имеют одинаковые хеш-значения, потому что у них одинаковый контент.

Вы можете перенаправить хеш-значения файла (файлов) в текстовый файл, сохранить их и поделиться ими с другими. Для двух приведенных выше файлов вы можете выполнить приведенную ниже команду, чтобы перенаправить сгенерированные хэш-значения в текстовый файл для последующего использования:

Чтобы убедиться, что файлы не были изменены с момента создания контрольной суммы, выполните следующую команду. Вы должны иметь возможность просматривать имя каждого файла вместе с «ОК».

Опция -c или --check указывает команде md5sums прочитать суммы MD5 из файлов и проверить их.

Помните, что после создания контрольной суммы вы не можете переименовывать файлы, иначе вы получите ошибку «Нет такого файла или каталога» при попытке проверить файлы с новыми именами.

Эта концепция также работает и для строк, в приведенных ниже командах -n означает, что не выводить конечный символ новой строки:

В этом руководстве я показал вам, как генерировать хеш-значения для файлов, создавать контрольную сумму для последующей проверки целостности файлов в Linux. Хотя в алгоритме MD5 были обнаружены уязвимости в системе безопасности, хэши MD5 по-прежнему остаются полезными, особенно если вы доверяете стороне, которая их создает.

Поэтому проверка файлов является важным аспектом обработки файлов в ваших системах, чтобы избежать загрузки, хранения или обмена поврежденными файлами. И последнее, но не менее важное: как обычно, свяжитесь с нами с помощью формы комментариев ниже, чтобы получить любую помощь, вы также можете внести несколько важных предложений по улучшению этого сообщения.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

1 мысль о «Узнайте, как создавать и проверять файлы с контрольной суммой MD5 в Linux»

Полезная статья для создания и проверки файлов с контрольной суммой md5 в Linux.

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

Всегда задавались вопросом, как использовать контрольную сумму? В этом введении показано, что они означают, и как использовать соответствующие инструменты для проверки целостности файла.

Опубликовано: 18 января 2021 г. | Дэймон Гарн (Red Hat)

Фото Маркуса Списке из Pexels

Скорее всего, вы видели ссылки на хэши или контрольные суммы, когда загружали программное обеспечение из Интернета. Часто софт будет отображаться, а потом возле ссылки будет контрольная сумма. Контрольная сумма может быть помечена как MD5, SHA или другим подобным именем. Вот пример использования одной из моих любимых старых игр 1990-х годов под названием Nethack:

Если вы загрузите Nethack, вы можете проверить файл, сравнив результат хеширования md5sum с тем, который отображается на веб-сайте.

Многие люди не знают точно, что означает эта информация и как с ней работать. В этой статье я расскажу о назначении хеширования и о том, как его использовать.

Цели криптографии

В этом первом разделе я хочу, чтобы вы кое-что забыли. В частности, я хочу, чтобы вы разорвали в своей голове ассоциацию между словом шифрование и словом конфиденциально. Многие из нас считают эти два слова синонимами, хотя на самом деле это не так. Криптография, которая включает в себя шифрование, может обеспечить конфиденциальность, но также может служить и другим целям.

На самом деле криптография преследует три цели:

  • Конфиденциальность: содержимое файла не может быть прочитано неавторизованными пользователями.
  • Подлинность – подтверждение происхождения файла.
  • Целостность – подтверждение того, что файл не был неожиданно изменен.

Безопасность Linux

Именно третье понятие, целостность, нас здесь интересует. В этом контексте целостность означает доказательство того, что данные не изменились неожиданно. Доказательство целостности полезно во многих случаях:

  • Загрузки из Интернета, такие как дистрибутивы Linux, программное обеспечение или файлы данных.
  • Передача файлов по сети через NFS, SSH или другие протоколы
  • Проверка установки программного обеспечения
  • Сравнение сохраненного значения, например пароля, со значением, введенным пользователем.
  • Резервные копии, которые сравнивают два файла, чтобы определить, изменились ли они.

Что такое хеширование?

Криптография использует хеширование для подтверждения того, что файл не изменился. Простое объяснение состоит в том, что один и тот же метод хеширования используется для файла на каждом конце загрузки из Интернета. Файл хэшируется на веб-сервере веб-администратором, и результат хеширования публикуется. Пользователь загружает файл и применяет тот же метод хеширования. Результаты хеширования или контрольные суммы сравниваются. Если контрольная сумма загруженного файла совпадает с контрольной суммой исходного файла, то два файла идентичны, и не было никаких непредвиденных изменений из-за повреждения файла, атак типа «человек посередине» и т. д.

Хеширование — это односторонний процесс. Результат хэширования нельзя отменить, чтобы открыть исходные данные. Контрольная сумма — это строка вывода заданного размера. Технически это означает, что хеширование не является шифрованием, поскольку шифрование предназначено для реверсирования (дешифрования).

Какую хеш-криптографию можно использовать в Linux?

Дайджест сообщений и безопасный алгоритм хеширования

В Linux вы, скорее всего, будете взаимодействовать с одним из двух методов хеширования:

Эти средства шифрования встроены в большинство дистрибутивов Linux, а также в macOS. Windows обычно не включает эти утилиты, поэтому вы должны загрузить их отдельно от сторонних поставщиков, если хотите использовать эту технику безопасности. Я думаю, это здорово, что такие инструменты безопасности являются частью Linux и macOS.

Дайджест сообщений и алгоритм безопасного хеширования

В чем разница между дайджестом сообщения и безопасным алгоритмом хеширования?Разница заключается в используемой математике, но они достигают одинаковых целей. Системные администраторы могут предпочесть одно другому, но в большинстве случаев они работают одинаково. Однако они не являются взаимозаменяемыми. Хэш, сгенерированный с помощью MD5 на одном конце соединения, не будет полезен, если на другом конце используется SHA256. Один и тот же метод хеширования должен использоваться с обеих сторон.

SHA256 генерирует больший хэш, и для его завершения может потребоваться больше времени и вычислительных мощностей. Такой способ считается более безопасным. MD5, вероятно, достаточно хорош для большинства основных проверок целостности, таких как загрузка файлов.

Где найти хеширование в Linux?

Linux использует хэши во многих местах и ​​ситуациях. Контрольные суммы могут быть сгенерированы пользователем вручную. Вы увидите, как именно это сделать позже в статье. Кроме того, возможности хеширования включены в /etc/shadow , rsync и другие утилиты.

Например, пароли, хранящиеся в файле /etc/shadow, на самом деле являются хэшами. Когда вы входите в систему Linux, процесс проверки подлинности сравнивает сохраненное хэш-значение с хешированной версией введенного вами пароля. Если две контрольные суммы идентичны, исходный пароль и введенный вами пароль идентичны. Другими словами, вы ввели правильный пароль. Однако это определяется без фактической расшифровки сохраненного пароля в вашей системе. Проверьте первые два символа второго поля для вашей учетной записи пользователя в /etc/shadow. Если два символа равны $1, ваш пароль зашифрован с помощью MD5. Если символы равны 5 долларам, ваш пароль зашифрован с помощью SHA256. Если значение равно $6, используется SHA512. SHA512 используется на моей виртуальной машине Fedora 33, как показано ниже:

Хэш пароля находится во втором поле файла /etc/shadow. Первые два символа поля указывают на используемый тип хэша. В данном случае $6 или SHA512.

Как создать контрольные суммы вручную

Использовать хеш-утилиты очень просто. Я покажу вам очень простой сценарий, который можно выполнить на лабораторном компьютере или любой другой системе Linux, которая у вас есть. Цель этого сценария — определить, изменился ли файл.

Сначала откройте свой любимый текстовый редактор и создайте файл с именем original.txt и строкой текста, которая гласит: Исходная информация.

Затем пропустите файл через алгоритм хеширования. Я пока буду использовать MD5. Команда md5sum . Вот пример:

Кубернеты и OpenShift

Обратите внимание на итоговое значение контрольной суммы. Это значение достаточно велико, и с ним трудно работать. Давайте сохраним это значение для будущего использования, перенаправив его в файл:

На данный момент у вас есть исходный файл. Скопируйте этот файл в каталог /tmp с именем дубликат.txt. Скопируйте файл с помощью следующей команды (обязательно копируйте, а не перемещайте):

Выполните следующую команду, чтобы создать контрольную сумму скопированного файла:

Затем добавьте результат хеширования в наш файл hashes.txt и сравните их. Будьте очень осторожны, используя здесь оператор перенаправления >> append, потому что > перезапишет хеш-значение исходного файла .txt.

Выполните следующую команду:

Два результата хеширования идентичны, поэтому файл не изменился в процессе копирования.

Затем смоделируйте изменение. Введите следующую команду, чтобы изменить содержимое файла /tmp/duplicate.txt, а затем повторно запустите команду md5sum с оператором добавления >>:

Вы знаете, что файл-дубликат.txt больше не идентичен исходному файлу.txt, но давайте докажем, что:

Две контрольные суммы не идентичны, поэтому два файла, из которых были сгенерированы контрольные суммы, не идентичны.

В приведенном выше примере вы вручную сравнили хеш-значения, отобразив их с помощью cat . Вы можете использовать параметр --check, чтобы md5sum выполнил сравнение за нас. Я включил оба метода ниже:

Вы можете повторить описанные выше шаги, заменив команду md5sum на sha256sum, чтобы увидеть, как работает процесс с использованием алгоритма SHA. Команда sha256sum также включает параметр --check контрольной суммы, который сравнивает полученные хэши и отображает сообщение о том, различаются ли файлы.

Примечание. Если вы передаете файлы между Linux, macOS и Windows, вы все равно можете использовать хеширование для проверки целостности файлов. Чтобы сгенерировать хеш-значение в macOS, запустите команду md5. Для этого в Windows необходимо скачать стороннюю программу. Лично я использую md5checker. Обязательно разберитесь в лицензировании этих утилит. Вы можете использовать командлет PowerShell get-filehash , в зависимости от установленной версии PowerShell.

[ Бесплатный курс: Технический обзор Red Hat Satellite.]

Подведение итогов

Хеширование подтверждает, что данные не изменились неожиданно во время передачи файла, загрузки или другого события. Эта концепция известна как целостность файлов. Хеширование не говорит вам, что изменилось, просто что-то изменилось. Как только хеширование покажет вам, что два файла различаются, вы можете использовать такие команды, как diff, чтобы обнаружить существующие различия.

добавление примечания для тех, кого это может касаться: SHA-1 теперь скомпрометирован, что доказано совместным исследованием Google и CWI. TL;DR Не используйте его в любом месте, имеющем какую-либо ценность.

Просто добавим, что, несмотря на то, что он скомпрометирован, то есть его нельзя использовать для чего-либо, что требует криптографической защиты, он по-прежнему является хорошим способом проверки контрольной суммы, если безопасность не имеет значения

6 ответов 6

Распечатайте или проверьте контрольные суммы SHA1 (160-бит). Если ФАЙЛ отсутствует или если ФАЙЛ равен -, читать стандартный ввод.

Если вы хотите отправить файл вместе с выводом sha1sum, перенаправьте вывод в файл:

Отправьте оба файла, и другая сторона сможет сделать a.

Должно быть показано OK, если sha1 правильный.

Отлично! Но как запустить sha1sum -c, если <файл>.sha1 содержит только хэш и не содержит имени файла (часто загружаемого из разных уголков Интернета)? Я придумал for f in *.sha1; сделать эхо "$(кот $f) $"; сделано | sha1sum -c (обратите внимание на двойной пробел), но это должно быть намного проще.

или shasum -- SHA по умолчанию (если я не ошибаюсь) SHA1. Также вы устанавливаете его с опцией -a, --algorithm: shasum -a 1

@PiotrFindeisen - вывод sha1sum таков, что достаточно информации для sha1sum -c, чтобы узнать, какой файл нужно проверить

Без создания локального файла:

Для проверки перейдите в каталог, содержащий имя файла, и выполните следующую команду:

Спасибо, хотя я не думаю, что вам следует поставить * здесь. Вот конкретный пример: echo 'b78bb50bdac5ec8c108f34104f788e214ac23635 raspbian.zip' | sha1sum -c — это проверит имя файла raspbian.zip в текущем каталоге.

На всякий случай, если кто-то попадет сюда и находится на Mac, между именем файла и выводом shasum в OSX 10.13.3 есть два пробела. Когда я использовал только один, я получил ошибку неправильного форматирования для shasum -c

Это очень просто.

Перейдите к терминалу и введите:

для проверки использования хэша sha1:

Аргумент check генерирует хэш sha1 имени файла и сравнивает его со значением, хранящимся в filename.sha1 . Если он соответствует, отображается OK, а код выхода для команды равен 0

Для тех, кто работает на Mac и не установил coreutils/sha1sum.

это askubunutu, так что использование Mac не по теме ;) но это должно работать и на Ubuntu, так что +1

О чем вы говорите? Да, я понимаю концепцию sha1sum, но приведенная выше информация сбивает с толку. Во-первых, похоже, что в Ubuntu нет файлов sha1sum — только строки на веб-странице, например, для Mate 16.04 Beta 1:

Чтобы проверить целостность скачанного .iso, нужно открыть терминальную программу, выполнить «Загрузки cd», затем sha1sum . Через некоторое время терминал выдаст хэш, такой как

Затем мы должны перейти на веб-страницу и сравнить строки, чтобы убедиться, что проверка работает. Не так просто, как могло бы быть.

Питон

У Python есть отличная библиотека hashlib, которая позволяет вычислять несколько хеш-сумм, включая sha1. Вот простой скрипт, который может выполнить эту работу:

Тестовый запуск:

В одном файле:

Очень активный вопрос. Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с тегами контрольные суммы или задайте свой вопрос.

Связано

Связанные

Горячие вопросы о сети

Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.18.41718

Безопасность в Интернете является одним из наиболее важных аспектов, когда речь идет о всемирной паутине. Постоянно проводятся исследования и разработки, направленные на повышение безопасности приложений и файлов в Интернете и, таким образом, на предотвращение злонамеренного использования.

Файлы, загружаемые через Интернет, часто становятся целью атак в Интернете. Поскольку тысячи и тысячи людей регулярно загружают эти файлы, защита таких файлов становится особенно важной.

В этой статье мы узнаем о контрольных суммах и о том, как их можно использовать для проверки подлинности файла, загруженного из Интернета.

Что такое контрольная сумма SHA256?

Контрольная сумма — это криптографическая подпись файла. По сути, это строка, однозначно представляющая файл; таким образом, если файл «подделан» или «модифицирован», значение его контрольной суммы изменится, и пользователь узнает, что файл был изменен.

Существует ряд математических алгоритмов для создания контрольной суммы файла в Linux. Одним из таких широко используемых алгоритмов является SHA256, который расшифровывается как «Алгоритм безопасного хеширования 256» и был разработан Агентством национальной безопасности США.

Этот алгоритм разбивает данные файла на части небольшого размера, создает и объединяет хэш-значения для каждой части для создания значения контрольной суммы. Контрольная сумма SHA256 обычно предоставляется в текстовом файле или непосредственно в виде строки вместе с основным файлом в разделе загрузки в Интернете.

Проверка контрольной суммы SHA256 файла в Linux

Давайте возьмем пример загрузки ISO-файла Ubuntu Groovy (20.10) и попробуем проверить его контрольную сумму. Обратите внимание, что вместе с файлами ISO предоставляется текстовый файл SHA256SUMS, содержащий значения контрольной суммы.

Загрузить файл Ubuntu с контрольной суммой

Загрузите файл ISO для рабочего стола Ubuntu 20.10 и файл SHA256SUMS в одну папку и перейдите в папку, в которую они загружены.

Чтобы сгенерировать контрольную сумму файла ISO, выполните следующее:

Создать контрольную сумму загруженного файла

Чтобы сравнить контрольную сумму со значением в файле SHA256SUMS, запустите команду с флагом '-c'. Это возьмет все контрольные суммы в файле, сравнит их с соответствующим именем файла и напечатает имя файла, соответствующее контрольной сумме.

Сравните контрольную сумму файла с SHA256SUMS

Как видно выше, файл ISO соответствует исходной контрольной сумме, и, следовательно, мы можем быть уверены, что файл не был изменен или подделан каким-либо образом во время загрузки.

Другой вывод относится ко второй контрольной сумме в файле: для файла ISO живого сервера, который не загружен, и поэтому команда печатает эти ошибки.

Заключение

Сегодня мы узнали, как проверить контрольную сумму sha256 файла в Linux. Обязательно ознакомьтесь со страницей руководства sha256sum (запустив «man sha256sum»), чтобы узнать больше об этой команде.

Спасибо за прочтение. Сообщите нам свои мысли или вопросы в комментариях ниже!

Читайте также: