
- •Теория алгоритмов (краткий курс лекций для самостоятельной работы)
- •Лекции по теории алгоритмов Введение
- •Предмет криптографии
- •Лекция №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
- •Алгоритм решения задачи следующий:
- •Литература
Модулярная арифметика
В основу модулярной арифметики положена операция «деление по модулю», которая дает возможность бесконечное множество целых чисел отобразить в конечное множество классов эквивалентности (классов вычетов по модулю). Модулярная арифметика нашла широкое применение в криптографии.
ОпределениеПри заданных целых
числахx
,иn>
0 операцияx
(modn)
«деление по модулю» возвращаетr– остаток от деления числаx
на числоn
(и удовлетворяет условиюx=
k
n
+ r
, гдеk– целое число).
Теорема(свойства операции «деление по модулю»)
Пусть x, y иn > 0 – целые числа, причем НОД (y, n) = 1 (НОД – наибольший общий делитель; если НОД (y, n) = 1, тоy и nназывают взаимно простыми числами).
1. (x + y) mod n = [(x ) mod n + (y) mod n] (mod n).
2. ( – x ) mod n = (n – x ) mod n = n – (x mod n) .
3. (x x y) mod n = [(x ) mod n x (y) mod n] (mod n).
4. Обозначим через y-1modn величину, обратную кyпо модулюn. Она является единственным числом из интервала [1,n–1], удовлетворяющем условию (y-1x y )modn = 1.
Как и при делении рациональных чисел, деление чисел по модулю можно заменить на умножение делимого на число обратное делителю (если оно существует). Для любого y, если НОД (y, n) = 1, выражение (x x y-1) modnможно заменить на (x / y) modn .
ЗамечаниеВ операции «деление по модулю»x modn величинаkне важна. Следовательно в тождествеx modn = y modn числаx иyмогут отличаться на величину, кратнуюn. Тогда это уравнение можно записать такx ≡ y modn илиy ≡ x modn . Эта операция называется сравнение чисел по модулю, а числаxиyназывают сравнимыми по модулю.
Анализ приведенных выше свойств свидетельствует о том, что модулярная арифметика очень похожа на целочисленную. Операции сложение по модулю и умножение по модулю:
а) коммутативны (перестановка операндов не меняет результата);
б) ассоциативны (изменение последовательности выполнения операций результата не меняет).
Возведение в степень по модулю
Определение x y (modn) при x , y > 0 совпадает с определением обычной степени целого числа (т.е =xx x …x (yраз) (modn)).
Введем операцию целочисленного деления на 2 (y ÷ 2):
y ÷ 2 = |
|
y / 2, еслиy– четно |
(y – 1)/ 2, еслиy– нечетно |
Тогда:
x y = |
|
(x 2)(y ÷ 2) , еслиy– четно |
x (x 2)(y ÷ 2), еслиy– нечетно |
Алгоритм возведения целого числа в степень по модулю
ВХОД : x, y , n : целые числа x> 0, y≥ 0 n > 1
ВЫХОД : x, y (mod n).
Е (x, y , n )
1. if y = 0 return ( 1 );
2. if y (mod 2) = 0 return ( E (x2(mod n)), (y ÷ 2), n );
3. return (x ∙E (x2(mod n)), (y ÷ 2), n ) (mod n).
Операция return(значение) возвращает процесс вычисления в точку вызова функции Е (т.е. если выполнен шаг 2, то шаг 3 не будет реализован).
Пример 1Вычислить 221(mod23).
221(mod23) = Е (2, 21, 23) = 2∙ Е (4, 10, 23) = 2∙ Е (16, 5, 23) = 2∙ 16∙Е (162, 2, 23) =
= (2∙ 16)(mod23) ∙Е (162(mod23), 2, 23) = 9∙Е (3, 2, 23) = 9∙Е (9, 1, 23) = 81∙Е (9, 0, 23) =
=81 (mod23) = 12.
Ответ: 221(mod23) ≡ 12.
Пример 2Вычислить 321(mod23).
321(mod23) = Е (3, 21, 23) = 3∙ Е (9, 10, 23) = 3∙ Е (81, 5, 23) = 3∙ 12∙Е (122, 2, 23) =
= (3∙ 12)(mod23) ∙Е (122(mod23), 2, 23) = 13∙Е (6, 2, 23) = 13∙Е (36(mod23), 1, 23) =
= 13∙Е (13, 1, 23) = 13∙13∙Е (13, 0, 23) = 169 (mod23) = 8.
Ответ: 321(mod23) ≡ 8.
Пример 3Вычислить 1121(mod23).
1121(mod23) = Е (11, 21, 23) = 11∙ Е (121(mod23),10,23) = 11∙ Е (6,10,23) = 11∙ Е (36,5,23) =
= 11∙ Е (13, 5, 23) = 11∙13∙Е (169, 2, 23) = 5∙Е (8, 2, 23) = 5∙Е (64, 1, 23) = 5∙Е (18, 1, 23) =
= 5∙18∙Е (18, 0, 23) = 90 (mod23) = 21. Ответ: 1121(mod23) ≡ 21.