Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7qof31jgDC.file.О.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
1.48 Mб
Скачать

9.10. Методы кодирования

Под кодированием понимается замена элементов откры­того текста (букв, слов, фраз и т.п.) кодами. Различают сим­вольное и смысловое кодирование. При символьном кодиро­вании каждый знак алфавита открытого текста заменяется со­ответствующим символом. Примером символьного кодирова­ния служит азбука Морзе, а также методы шифрования заме­ной и перестановкой.

Рассмотрим метод символьного кодирования, который использует предыдущие символы открытого текста (метод стопки книг).

Предположим, что нужно передать сообщение X из алфа­вита А, в котором буквы алфавита отождествлены с числами 1,2,..L, где L – число элементов алфавита А. Каждой букве ал­фавита соответствует код ki, i=1..L. При появлении в сообще­нии X очередной буквы хj ее код представляется кодом номера позиции j, занимаемой в данный момент буквой хj в списке. Это дает возможность на приемном конце по коду номера по­зиции j определить букву хj. После кодирования буквы хj одно­временно на приемном и передающих концах перемещают бу­кву хj в начало списка, увеличивая тем самым на единицу но­мера букв, стоявших на позициях от 1 до j-1. Номера букв, стоявших на позициях от j+1 до L, остаются без изменений. В результате кодирования открытого текста в начале списка бу­дут находиться буквы, которые наиболее часто встречались в открытом тексте.

Пример 17.

Открытый текст: «АБРАКАДАБРА».

Алфавит: {А,Б,Д,К,Р}.

Начальный список соответствует последовательности букв в алфавите и ему соответствует список кодов {К1,К2,КЗ,К4,К5}.

К1 А А Б P А К А Д А Б Р А

К2 Б Б А Б Р А К А Д А Б Р

К3 Д Д Д A Б Р Р К К Д А Б

К4 К К К Д Д Б Б Р Р К Д Д

К5 Р Р Р К К Д Д Б Б Р К К

¦ ¦

¦ начальный список

список кодов

Закодированное сообщение: «К1 К2 К5 К3 К5 К2 К5 К2 К5 К5 К3».

Смысловое кодирование – это кодирование, в котором в качестве исходного алфавита используются не только отдель­ные символы (буквы), но и слова и даже наиболее часто встре­чающиеся фразы.

Пример 17.

Открытый текст: «19.9.1992 ГОДА».

Таблица кодирования представлена в табл. 19.

Таблица 19

Элементы открытого

текста

Коды

1

089 146 214 417

2

187 226 045 361

9

289 023 194 635

ГОД

031 155 217 473

.

786 432 319 157

Закодированное сообщение при одноалфавитном кодиро­вании:

«89 289 786 289 786 089 289 289 187 031»

Закодированное сообщение при многоалфавитном коди­ровании:

«89 289 786 023 432 146 194 635 187 031».

Среди различных кодов, применяемых для кодирования естественных языков, особый интерес вызывает код Хаф­фмена, который позволяет сжимать открытый текст. Суть его состоит в присваивании наиболее часто встречающимся бук­вам наиболее коротких кодов.

Строка двоичных символов кодов Хаффмена единствен­ным образом разлагается на коды.

9.11. Другие методы шифрования

Специфика применения ПЭВМ позволяет реализовать дополнительные методы кодирования для надежного закрытия содержимого файлов. Примером такого кодирования является метод рассечения-разнесения, в соответствии с которым со­держимое одного файла разбивается на блоки, которые разно­сятся по нескольким файлам. Каждый такой файл не несет ни­какой информации, а сбор данных в единое целое осуществля­ется простой программой.

Пример 18.

Блок (файл открытого текста) начинается словами:

«МЕТОД_РАССЕЧЕНИЯ-РАЗНЕСЕНИЯ».

Для рассечения блока открытого текста на 8 частей за­пишем открытый текст в следующем виде:

1

2

3

4

1

М

Е

Т

О

2

Д

_

Р

А

1

С

С

Е

Ч

2

Е

Н

И

Я

1

-

Р

А

З

2

Н

Е

С

Е

1

Н

И

Я

Для рассечения текста на 8 частей выбраны 2 строки и 4 столбца. Пусть столбцы sj выбираются в последовательности {4,1,3,2}, а строки ri – в последовательности (2,1}. Тогда номер k блока Фk, куда записывается очередной символ открытого текста, определяется по формуле:

k= (ri-1)n+sj,

где n – число столбцов.

Первый символ М запишется в блок с номером (ri=2, sj=4):

k=(2-1)*4+4=8;

второй символ E – в блок с номером (ri=2, sj=1);

k=(2-1)*4+1=5, и т.д.

Тогда блоки Фk, записанные в порядке номеров, будут содержать следующие символы: Ф1=(_НЕ...), Ф2=(АЯЕ...), Ф3=(РИС..,), Ф4={ДЕН...), Ф5={ЕСРИ...}, Ф6={ОЧЗ...), Ф7={ТЕАЯ...), Ф8={МС-Н...}. Таким образом, один блок от­крытого текста заменяется восемью блоками, которые в сумме дают длину исходного блока.

Методы сжатия данных осуществляют такое пре­обра­зование повторяющихся символов и строк символов, которое позволяет использовать для хранения данных меньший объем памяти.

Методы сжатия можно разделить на два класса: статиче­ские и динамические (адаптивные).

Методы статического сжатия данных эффективны, когда частоты появления символов изменяются незначительно. Ме­тоды динамического сжатия адаптивно отслеживают неравно­мерности частот появления символов с сохранением последо­вательности изменений вероятностей появления символов.

К статическим методам можно отнести код Хаффмена и метод стопки книг.

Адаптивные методы сжатия могут динамично реагиро­вать на изменения в открытом тексте, происходящие по мере кодирования. Первые такие методы являлись модификацией кодов Хаффмена и использовали счетчики для хранения теку­щих частот появления каждого символа. При таких методах наиболее часто встречающиеся символы сдвигаются ближе к корню дерева и, следовательно, получают более короткие ко­довые слова.

Кодирование Лемпеля-Зива использует синтаксический метод для динамического источника. Этот метод осуществ­ляет синтаксический анализ символьных потоков, которые не превышают заданной длины, и строит таблицу отображения этих потоков в кодированные слова фиксированной длины. Длина кодового слова зависит от размера таблицы, используе­мой для хранения кодового отображения поток-слово. Напри­мер, размер таблицы в 4096 слов требует 12-битового кодового слова. Кодовое слово является просто табличным адресом со­ответствующих слов в таблице.

Каждый из методов кодирования может использоваться для защиты данных, особенно если используется свой (нестан­дартный) вариант метода сжатия данных. Стойкость кодиро­вания повышается при использовании нескольких методов сжатия для одного блока открытых данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]