Создание уникального хэша на основе содержания изображения (PNG) в Ubuntu? - PullRequest
3 голосов
/ 11 апреля 2011

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

Например, для тестирования я создаю очень большой файл PNG со случайными цветами / линиями / формами / и т. Д. Затем я сохранил файл как test1.png. Затем я создал однопиксельную черную точку в углу изображения и сохранил ее как test2.png.

Я запустил md5sum на обоих изображениях и получил разные значения хеша (ожидается). Затем я скачал test2.png, удалил один черный пиксель и сохранил файл как test3.png. test3.png и test1.png содержат ТОЧНОЕ одинаковое изображение.

Теперь из того, что я понимаю, PNG должно быть сжатие без потерь, так что это не должно быть проблемой (?). Я немного в темноте (как вы, вероятно, можете сказать) обо всем этом, поэтому, если кто-нибудь может дать мне какие-либо идеи, я буду очень признателен!

1 Ответ

5 голосов
/ 11 апреля 2011

Вы не сказали этого, но я полагаю, вы получаете разные хэши для test1.png и test3.png?

Файлы PNG могут содержать немало метаданных в дополнение к данным изображения;Возможно, что некоторые из метаданных отличаются.Также возможно, что одни и те же данные изображения будут сжаты разными способами.Если вы действительно хотите это узнать, сравните файлы, чтобы узнать, что именно отличается.

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

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