Рейтинг@Mail.ru

Что такое энтропия файла

Любой компьютерный файл, как известно, состоит из байтов. Байт может принимать значения от 0 до 255. Информационная энтропия – это статистический параметр, который показывает вероятность встречаемости определённых байтов в файле.

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

Для демонстрации возьмём три файла разных типов и сравним их гистограммы. Первый пусть будет текстовый файл (*.TXT). Его гистограмма показана на рисунке:

Гистограмма текстового файла
Гистограмма текстового файла

Текстовый файл содержит только текст. Каждый символ текста кодируется определёнными байтами в соответствии с таблицей кодировки. Хотя видов кодировок достаточно большое количество, представленный файл – в кодировке ASCII, поэтому на первой гистограмме заняты лишь некоторые области, а некоторых байтов (больше числа 127) нет вовсе. Видно, что некоторые из символов (букв или цифр) в файле встречаются чаще, некоторые – реже. Больше всего в текстовом файле пробелов, отсюда и высокий пик на значении байта 3210.

Следующий файл будет формата PDF:

Гистограмма файла PDF
Гистограмма файла PDF

Этот файл имеет все возможные байты, так как формат PDF кодируется не так, как текстовые файлы. Он хранит много служебной информации: форматирование, шрифты, изображения и т.д. Но по его гистограмме видно, что некоторые из байтов встречаются с примерно равной вероятностью, в то время как другие – намного чаще остальных. Отсюда и множественные острые всплески на гистограмме, и в целом она имеет довольно «рваный» вид, хотя и занимает всю доступную ширину.

И последний файл – заархивированный в формат 7Z:

Гистограмма файла 7Z
Гистограмма файла 7Z

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

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

Ну и напоследок выкладываю программу, которая показывает энтропию файла в линейном или логарифмическом масштабе. Она очень простая и делает только это. Для неё нужен .NET версии 3.5.

Скачать вложения:

Последнее изменениеСреда, 26 Июль 2017 21:14
(1 Голосовать)
Прочитано 981 раз

Поделиться

Другие материалы в этой категории:

« Какие существуют среды разработки (IDE) для Arduino

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены