- •Теория алгоритмов (краткий курс лекций для самостоятельной работы)
- •Лекции по теории алгоритмов Введение
- •Предмет криптографии
- •Лекция №1
- •Краткие теоретические сведения
- •1 Шифр сцитала
- •2 Шифр вертикальной перестановки
- •3 Шифр поворотной решетки
- •4 Шифры с использованием магичных квадратов
- •5 Перестановка бит
- •Лекция №2
- •Краткие теоретические сведения
- •Варианты реализации шифров простой замены
- •1 Система шифрования Цезаря
- •2 Афинная система подстановок
- •3 Лозунговый шифр
- •4 Шифровальный квадрат Полибия
- •5 Шифровальная таблица Трисемуса
- •4Х8 «Сколько волка ни корми, он все в лес глядит »
- •Лекция №3
- •Краткие теоретические сведения
- •1 Биграммный шифр Плейфейера
- •2 Шифр с использованием омофонов
- •3 Шифр Гронсфельда
- •4 Система шифрования Вижинера
- •5 Шифр «Двойной квадрат Уитстона»
- •Общие сведения о блочных шифрах
- •Описание алгоритма des
- •Режимы реализации алгоритмов симметричного шифрования
- •Асимметричные криптоалгоритмы
- •Модулярная арифметика
- •Открытое распределение ключей
- •Криптосистема rsa
- •7 Самокорректирующиеся коды
- •7.1 Построение кодов Хемминга (описание алгоритма кодирования)
- •7.2 Обнаружение ошибок в кодах Хемминга
- •7.3 Декодирование
- •Примеры решения задач Задача № 3
- •Задача № 4
- •Алгоритм решения задачи следующий:
- •Литература
7.2 Обнаружение ошибок в кодах Хемминга
Ошибка на выходе из канала связи может быть обнаружена и исправлена только в случае ее появления в информационных членах (для построенного кода – не больше одной в каждом элементарном коде). Даже при появлении ошибки в контрольных членах ее обнаружение возможно. Номер позиции S(записанный в двоичной системе), в которой произошла ошибка, определяется так:
S = Sk… S2 S1 ,
где Siопределяется по формулам (4.4) для элементарного кода, полученного на выходе канала связи. Если ошибки нет, тоSi= 0 и общий результатS= 0.
Пример:Пусть на вход канала связи поступил элементарный код 0110011 (т.е закодировано **1*011 (поз. 3,5,6,7 – контрольные члены заменены * )). На выходе получено 0110001 (искажен 6–й член элементарного кода). ВычислимS.
S1 = 1 + 3+ 5 + 7 = 0 + 1 + 0 + 1 = 0 ( mod 2),
S2 = 2 + 3+ 6 + 7 = 1 + 1 + 0 + 1 = 1 (mod 2),
S3 = 4 + 5 + 6 + 7 = 0 + 0 + 0 + 1 = 1 (mod 2).
S = 1 1 0 = 6 (в десятичной системе).
Пусть на выходе получено 0111011 (искажен 4–й (контрольный) член элементарного кода).
S1 = 1 + 3+ 5 + 7 = 0 + 1 + 0 + 1 = 0 ( mod 2),
S2 = 2 + 3+ 6 + 7 = 1 + 1 + 1 + 1 = 0 (mod 2),
S3 = 4+ 5 + 6 + 7 = 1 + 0 + 1 + 1 = 1 (mod 2).
S = 1 0 0 = 4 (в десятичной системе).
7.3 Декодирование
После получения закодированного сообщения происходит его разбивка на элементарные коды, вычисление для каждого кода S и в случае его неравенства 0 – корректировка соответствующего информационного члена (еслиSуказывает на контрольный член, то корректировка не нужна). После удаления всех контрольных членов получаем исходное сообщение.
Примечание:Рассмотрено построение кодов Хемминга для бинарного кодирования и числе ошибок в элементарных кодах не более одной. Существует теория для построения таких кодов для равномерного кодирования любой арности и числе ошибок не более 2, 3,… и. д.
Пример решения задачи разработки кода Хемминга
Пример:
Разработать самокорректирующийся код (код Хэмминга) в соответствии с вариантом для бинарных слов длины m= 9 и привести примеры декодирования искаженных элементарных кодов (для всех вариантов – источник помех может исказить не более одной позиции элементарного кода).
Р Е Ш Е Н И Е
1Определим длинуlэлементарных кодов
2k–1 ≤l , а2k l+1, где l = m + k (по условию задачиm = 9 )
Оба неравенства выполняются для k= 4 ( 8 ≤ 13, 1613), т.е для 10 информационных членов понадобятся 4 контрольных членов в элементарных кодах, общая длина которых будет равна 14.
2Контрольные члени элементарного кода будут вычисляться так:
Ряд 1 1 = 3+ 5 + 7 + 9 + 11 + 13 (mod 2),
Ряд 2 2 = 3+ 6 + 7 + 10 + 11 (mod 2
Ряд 3 4= 5+ 6 + 7 + 12 + 13 (mod 2),
Ряд 4 8= 9+ 10 + 11 + 12 + 13 (mod 2),
3Пример кодирования исходного элементарного сообщения (длина 10 позиций т.еm= 10)
В таблице ниже приведен пример определения контрольных членов элементарного кода (контрольный член равен 1, если число единиц соответствующего ему ряда нечетно и 0 – если четно). Значения контрольных членов выделены курсивом.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
|
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
1 |
|
1 |
|
|
1 |
1 |
|
|
0 |
1 |
|
|
0 |
1 |
|
|
|
|
|
|
0 |
1 |
0 |
1 |
|
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
1 |
1 |
4Пример корректировки искаженного в одной позиции элементарного кода (пусть в процессе передачи по каналу связи элементарный код, представленный в строке 2 предыдущей таблицы искажен в позиции 5 вместо 1 получен 0 )
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Si |
|
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
|
|
1 |
|
1 |
|
0 |
|
1 |
|
0 |
|
1 |
|
1 |
1= S1 |
|
|
1 |
1 |
|
|
0 |
1 |
|
|
0 |
1 |
|
|
0= S2 |
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
1 |
1 |
1= S3 |
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
1 |
1 |
0= S4 |
В результате подсчета кода ошибки получен следующий результат:
S = Sk… S2 S1 = 0101 (в бинарном представлении), что соответствует 5 (т.е. ошибка в позиции 5 и для корректировки нужно 0 (поз. 5) заменить на 1). Результат восстановления приведен ниже.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
|
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
Осталось удалить контрольные биты в позициях 1,2,4,8.
Лекция 8
