2015-09-14 3 views
-3

У меня есть два байта, и я хочу сжать их в один байт, используя ключ (длина ключа может быть до 64 бит). И еще я хочу получить два байта, используя сжатый байт и тот же ключ. У кого-то есть идея, как это сделать?Сжатие или шифрование данных

Спасибо.

+0

Вы хотите сжать любую комбинацию из 2 байтов до одного байта? – Phylogenesis

+0

@ Филогенез: теперь не слишком поспешное отклонение этого ... это действительно возможно :-) Никто не сказал, что ключ должен быть случайным или свободно выбранным. 5 байтов (1 байт данных и 4 байта) достаточны для восстановления 2 байта. Секретные алгоритмы совместного доступа к спасению! Это на самом деле удивительное «шифрование», поскольку без информации в ключе невозможно восстановить информацию, независимо от того, сколько у вас вычислительной мощности. – Damon

ответ

0

Есть 2^{16} = 65,536 пути, которые выбирают пару 8-битных байтов.

Однако результатом вашей процедуры является только один 8-разрядный байт, который может иметь место в 2^8 = 256 различных вариаций.

Таким образом, вы можете использовать этот один байт в качестве входных данных для какой-либо процедуры распаковки, но поскольку имеется только 256 различных входов, процедура не может выдавать более 256 различных результатов, поэтому вы можете получить не более 256 из 65 536 возможных пары, другие пары недоступны, потому что у вас заканчиваются имена для них, так сказать.

Это делает процедуру непрактичной, если происходит более 256 различных пар байтов ввода.

(см комментарии ниже для более подробной информации)

сжатия будет только практичным, если существуют ограничения на входных данных. Например. если только пары p1 = (42,37) и p2 = (127,255) могут возникать как возможный вход, вы можете сжимать их как 01 и и 02.

+1

С технической точки зрения, общее сжатие невозможно, поскольку сжатие без потерь является биекцией на натуральные числа. – Phylogenesis

+0

Действительно. Итак, почему доступны без потерь компрессоры, такие как zip, которые, похоже, делают хорошую работу? Поскольку они не являются общими, для них есть материалы, которые они не могут уменьшить по размеру, но могут увеличить его. Чтобы процитировать Википедию: * Большинство программ сжатия без потерь выполняют две вещи последовательно: первый шаг генерирует статистическую модель для входных данных, а второй шаг использует эту модель для сопоставления входных данных с битовыми последовательностями таким образом, что «вероятный» (например, часто встречающиеся) данные будут давать более короткие результаты, чем «невероятные» данные. * – mvw

Смежные вопросы