The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Энтузиасты воссоздали метод мгновенной генерации PDF-файлов ..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Отдельный RSS теперь доступен для каждого обсуждения в форуме и каждого минипортала.
. "Энтузиасты воссоздали метод мгновенной генерации PDF-файлов ..." +3 +/
Сообщение от Lain_13 (ok), 26-Фев-17, 03:56 
Как бы тебе так объяснить, чтоб ты понял?

Любой файл можно представить как одно очень большое число. Контрольная сумма же имеет фиксированную длинну и она практически всегда корое файла, для которого рассчитывается. Т.е. мы выражаем большее число через меньшее. Если мы будем перебирать все такие большие числа по порядку, то рано или поздно мы найдём ещё одно большое число, контрольная сумма от которого будет идентична ранее найденной. Это называется коллизией. Т.е. два больших числа (файла) у нас разные, а вот контрольная сумма у них идентичная.

Возьмём набор чисел от 00 до 99 и самую простую контрольную сумму - сумму первого и второго разрядов до тех пор, пока не останется один разряд. Т.е. для 00 сумма будет 0, для 13 - 4, а для 99 - 9 (18 → 1+8). Всё просто? Но что произойдёт если рассчитать контрольные суммы для всех чисал? Как только мы дойдём до числа 10 мы наткнёмся на первую же коллизию с числом 01, 11 с 02, 12 с 03 и так далее.

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

Тут всё ясно?

Естественно прямой перебор занимает уйму времени, но в данном случае он нам и не нужен. Указанные манипуляции позволяют получать из двух картинок или pdf-файлов рызные по содержанию файлы (два разных больших числа), но с идентичной контрольной суммой. Никто ни какие блоки при рассчёте суммы не пропускает. Просто числа сформированы так, что для данной конкретной функции рассчёта контрольной суммы они дадут одинаковый результат. Если взять другую функцию рассчёта контрольной суммы (даже такой же длинны), то там, скорее всего, результат будет уже разный. Подобрать два числа выдающие коллизию на двух функциях значительно сложнее.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Энтузиасты воссоздали метод мгновенной генерации PDF-файлов ..., opennews, 25-Фев-17, 10:20  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру