Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Митряев лекции / ИБИС гр.445зс 2015 / КЗИ ИБИС гр.445зс. 2015 / КЗИ ИБИС Л.4. ЭЦП и ХФ. гр.444 (2015).docx
Скачиваний:
308
Добавлен:
25.03.2016
Размер:
366.05 Кб
Скачать

67

67

Л.4 КЗИ ИБИС гр.444 (2015)

Модулярная арифметика

Модулярная арифметика часто изучается в школе как "арифметика часов".

На часах со стрелками циферблат разделён на 12 частей, которые мы обозначим числами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. В следующей таблице можно видеть, как время на аналоговом циферблате соответствует времени после полудня на экране цифровых часов.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

Когда мы говорим, например, что сейчас 14:00, мы можем также сказать, что сейчас два часа дня. Тот же принцип применяется и в случае измерения углов. Угол в 370 градусов равен углу в 10 градусов, потому что от первого значения мы должны вычесть полный оборот в 360 градусов.

Заметим, что 370 = (1 х 360) + 10, то есть остатком от деления 370 на 360. Какой угол эквивалентен углу в 750 градусов? Вычитая соответствующее количество полных оборотов, получим, что угол в 750 градусов равен углу в 30 градусов. Мы видим, что 750 = (2х360 + 30, то есть 30 является остатком от деления 750 на 360. В математике это обозначается так:

750 30 (mod 360)

Мы говорим: «750 сравнимо с 30 по модулю 360».

В случае с часами мы бы написали 14 2(mod 12).

Также можно представить себе часы с отрицательными числами. В этом случае, который будет час, когда стрелка показывает на (-7)? Или другими словами, с каким числом сравнимо число (-7) по модулю 12?

Давайте посчитаем, учитывая, что на наших часах с циферблатом, разделённым на 12 частей, значение 0 соответствует 12.

-7 = -7 + 12 = 5

Математика для расчётов на наших часах со стрелками, циферблат которых разделён на 12 частей, называется арифметикой по модулю 12.

Если отсчитать 14 часов от 3 часов после полудня, то получится 5 часов утра следующего дня:

3 +14 5 (mod 12)

или

(3 +14) mod 12 = 5.

Это арифметика по модулю 12.

Обычная запись в модулярной арифметике

a b (mod n)

читается так: "a сравнимо с b по модулю n".

В общем случае мы говорим, что a b (mod n), если остаток от деления а на m равен b, при условии, что а, m и b – целые числа. Число b сравнимо с остатком от деления a на m.

Cледующие утверждения эквивалентны:

a b (mod n)

b a (mod n)

a - b 0 (mod n)

а – b кратно m

Вопрос «Которому часу на часах со стрелками соответствует время 19 часов?» эквивалентен в математических терминах следующему вопросу: «С каким числом сравнимо число 19 по модулю 12?»

Для ответа на этот вопрос надо решить уравнение:

19 Х (mod 12)

Разделив 19 на 12, получим частное 1 и остаток 7, поэтому

19 7 (mod 12)

Определим связь между модульной арифметикой и шифром ЦЕЗАРЯ.

Запишем в таблице стандартный алфавит и алфавит с сдвигом на три буквы, добавив титульный ряд из 26 чисел.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

Видно, что зашифрованное значение буквы под номером х ( в стандартном алфавите) буквой, стоящей на позиции (Х + 3) (также в стандартном алфавите).

Поэтому необходимо найти преобразование, которое каждому числу ставит в соответствие число, сдвинутое на три единицы, и взять результат по модулю 26. Заметим, что 3 является ключом нашего шифра. Таким образом, наша функция записывается как

С(х) = (х + 3) (mod 26),

Где: х – изначальное значение

С(х) – зашифрованное значение.

Теперь. Достаточно подставить вместо буквы её числовое значение и применить трансформацию.

Возьмём в качестве примера слово PLAY и зашифруем его.

Буква Р стоит на позиции 15, С(15) = 15 + 3 18 (mod 26 ), а число 18 соответствует букве S.

Буква L стоит на позиции 11, С(11) = 11 + 3 14 (mod 26 ), а число 14 соответствует букве O.

Буква A стоит на позиции 0, С(0) = 0 + 3 3 (mod 26 ), а число 3 соответствует букве D.

Буква Y стоит на позиции 24, С(24) = 24 + 3 = 27 (mod 26 ), а число 1 соответствует букве B.

Таким образом, слово РLAY , зашифрованное с ключом 3 превращается в слово SODB.

В общем случае, если х означает позицию буквы, которую мы хотим зашифровать (О для А, 1 для В, и т.д.) позиция зашифрованной буквы , обозначаемая С(х), выражается формулой:

С(х) = (х + k) (mod n),

Где: n – длина алфавита (26 в английском алфавите)

k – ключ, используемый в данном шифре.

Расшифровка такого сообщения включает в себя расчёты, обратные тем, что использовались для шифрования. В нашем примере расшифровка означает применение формулы, обратной той, что использовалась выше:

С-1 (х) =(х - k) (mod n),

В случае сообщения SODB, зашифрованного щифром Цезаря с ключом 3 с применением английского алфавита, то есть k = 3 и n = 26, мы получим:

С-1 (х) =(х - k) (mod 26),

Применим эту формулу следующим образом:

Для S: х = 18, С-1 (х) = 18 - 3 15 (mod 26), что соответствует букве P.

Для O: х = 14, С-1 (х) = 14 - 3 11 (mod 26), что соответствует букве L.

Для D: х = 3, С-1 (х) = 3 - 3 0 (mod 26), что соответствует букве A.

Для B: х = 1, С-1 (х) = 1 - 3 -2 +26 24 (mod 26), что соответствует букве Y.

Сообщение SODB, зашифрованное шифром Цезаря с ключом 3, соответствует оригинальному тексту PLAY.

Это соотношение справедливо для целых значений a,b и n 0,

если, и только если

a = b + k n

для некоторого целого k.