Поиск по сайту:

Как получить md5 хэш файла


Алгоритм Message-Digest, широко известный как хэш md5, представляет собой тип криптографической хеш-функции, в основном используемый для проверки целостности файлов. Md5 — это 128-битный дайджест сообщения, созданный после выполнения функции MD5 для файла.

Md5 имеет свои недостатки и поэтому не очень подходит для определенных методов шифрования, но очень хорошо подходит для проверки файлов. Он работает, создавая контрольную сумму файла и сравнивая результат с оригиналом. Это означает, что если в файле есть изменения, он никак не может создать значение дайджеста, похожее на оригинал. Значение остается постоянным независимо от того, где оно было сгенерировано и сколько раз, пока файл остается неизменным.

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

Установить md5sum

В Linux и почти в большинстве Unix и Unix-подобных системах они поставляются с предустановленным инструментом md5. Самый распространенный — md5sum. По умолчанию вы должны найти его доступным в вашей системе.

$ which md5sum
/usr/bin/md5sum

Если у вас не установлен этот инструмент, вы можете использовать менеджер пакетов вашей системы.

Debian/Ubuntu
В Ubuntu и других дистрибутивах на основе Debian используйте apt как:

sudo apt-get update
sudo apt-get install md5sum -y

REHL/CentOS
В REHL и CentOS используйте yum как:

sudo yum update
sudo yum install md5sum

Арка/Манджаро
Если вы используете Manjaro или другие дистрибутивы на основе Arch, используйте Pacman с помощью команды:

sudo pacman -Sy
sudo pacman -S md5sum

Fedora
Наконец, в системах Fedora используйте команду dnf как:

sudo dnf update
sudo dnf install md5sum

Сгенерировать Md5sum файла

Установив инструмент, мы можем продолжить и сгенерировать md5sum для файла. Вы можете использовать любой базовый файл, доступный в вашей системе. В моем примере я использую /etc/hosts, доступный в системах Linux.

Чтобы сгенерировать md5sum файла, просто используйте команду md5sum, за которой следует имя файла, которое вы можете увидеть в приведенной ниже команде:

sudo md5sum /etc/hosts

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

f0ea6f62e5a12ed9aee557b23842c6f6  /etc/hosts

После изменения содержимого файла значение md5sum становится совершенно другим. Например, добавьте значение в файл /etc/hosts.

sudo nano /etc/hosts

Добавьте следующую запись в файл (не стесняйтесь изменять ее так, как считаете нужным).

192.168.0.20           localhost

Если вы попытаетесь вычислить значение md5 файла с новым содержимым как:

sudo md5sum /etc/hosts

Хэш-значение отличается, как показано в выводе ниже:

f4b7f54d5b85a9e73e3c8960c6e9319e  /etc/hosts

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

ПРИМЕЧАНИЕ. Значение md5 будет похоже на исходное, даже если файл будет переименован. Это связано с тем, что md5 рассчитывается на основе содержимого файла, а не имени файла.

Проверка онлайн-файлов

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

https://dev.mysql.com/downloads/mysql/

Загрузите файл с помощью wget, используя команду:

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/libmysqlclient21_8.0.25-1debian10_amd64.deb

После загрузки файла:

Давайте теперь проверим значение md5 с помощью команды:

$ md5sum libmysqlclient21_8.0.25-1debian10_amd64.deb

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

62ea69f71defbfdac7a60c124f5769c7  libmysqlclient21_8.0.25-1debian10_amd64.deb

Заключение

В этом руководстве рассматривался простой метод проверки контрольной суммы файлов md5 и проверки состояния их модификации.

Вот быстрое упражнение для вас.

Упражнение

Создайте простой bash-скрипт, который каждые 5 минут проверяет, имеет ли значение md5 файла какое-либо записанное изменение. Если файл изменился, удалите файл и выключите систему.

Это должно быть веселое упражнение!

Статьи по данной тематике: