В других ответах указывалось, что случайный шум несжимаем, и хорошие функции шифрования имеют вывод, максимально приближенный к случайному шуму (если вы не знаете ключ дешифрования). Таким образом, хорошим подходом может быть использование генераторов случайных чисел или алгоритмов шифрования для генерации ваших несжимаемых данных.
Подлинно несжимаемые (с помощью любого алгоритма сжатия) существуют цепочки битов (для некоторых формальных определений «несжимаемого»), но даже распознать их невозможно с вычислительной точки зрения, не говоря уже о том, чтобы их генерировать.
Однако стоит отметить, что «случайные данные» несжимаемы только потому, что не существует алгоритма сжатия, который мог бы достичь степени сжатия лучше 1: 1 в среднем по всем возможным случайным данным. Однако для любой конкретной случайно сгенерированной строки может существовать определенный алгоритм сжатия, который действительно обеспечивает хорошую степень сжатия. В конце концов, любая сжимаемая строка должна быть возможна на выходе из генератора случайных чисел, включая такие глупые вещи, как все нули, хотя и маловероятные.
Таким образом, хотя возможность получения «сжимаемых» данных из генератора случайных чисел или алгоритма шифрования, вероятно, исчезающе мала, я бы действительно хотел протестировать данные, прежде чем использовать их. Если у вас есть доступ к алгоритмам сжатия, используемым в VPN-соединении, это будет лучше всего; просто генерируйте данные случайным образом, пока не получите то, что не сжимается. В противном случае, вероятно, будет достаточно просто запустить его с помощью нескольких распространенных инструментов сжатия и проверить, не уменьшается ли размер.
person
Ben
schedule
07.02.2012