Zlib — поддержка Header и No Header. Насколько надежны?

В настоящее время я работаю над огромным проектом, который, возможно, сжимает / распаковывает, используя zlib в C ++, более тысячи документов в день. (Наша реализация имеет zlib 1.2.8)

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

Наша команда задалась вопросом, существует ли на 100% надежный способ выяснить, присутствуют ли заголовки или нет.

Согласно этому документу: https://www.ietf.org/rfc/rfc1950.txt сказано: «Значение FCHECK должно быть таким, чтобы CMF и FLG при просмотре в виде 16-разрядного целого числа без знака, сохраненного в порядке MSB (CMF * 256 + FLG), были кратны 31».

Действительно, это хорошая проверка, но есть вероятность, что мы получим сжатый файл без заголовка, но его данные сделаны так, что (CMF * 256 + FLG) будет кратно 31.

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

Спасибо

5

Решение

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

На самом деле ограничения на передаваемые данные могут смягчаться, но это может быть опасно

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]