Опубликован: 19.01.2010 | Уровень: специалист | Доступ: платный
Лекция 2:

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

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

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

Уравнение деления ( a = q \times n + r ), рассмотренное в предыдущей секции, имеет два входа ( a и n ) и два выхода ( q и r ). В модульной арифметике мы интересуемся только одним из выходов — остатком r. Мы не заботимся о частном q. Другими словами, когда мы делим a на n, мы интересуемся только тем, что значение остатка равно r. Это подразумевает, что мы можем представить изображение вышеупомянутого уравнения как бинарный оператор с двумя входами a и n и одним выходом r.

Операции по модулю

Вышеупомянутый бинарный оператор назван оператором по модулю и обозначается как mod. Второй вход ( n ) назван модулем. Вывод r назван вычетом. Рисунок 2.9 показывает отношение деления по сравнению с оператором по модулю.

 Соотношение уравнения деления и оператора по модулю

Рис. 2.9. Соотношение уравнения деления и оператора по модулю

Как показано на рис. 2.9, оператор по модулю ( mod ) выбирает целое число ( a ) из множества Z и положительный модуль ( n ). Оператор определяет неотрицательный остаток ( r ).

Мы можем сказать, что

a mod n = r

Пример 2.14

Найти результат следующих операций:

a. 27 mod 5

b. 36 mod 12

c. –18 mod 14

d. –7 mod 10

Решение

Мы ищем вычет r. Мы можем разделить a на n и найти q и r. Далее можно игнорировать q и сохранить r.

а. Разделим 27 на 5 - результат: r = 2. Это означает, что 27 mod 5 = 2.

б. Разделим 36 на 12 — результат: r = 0. Это означает, что 36 mod 12 = 0.

в. Разделим (–18) на 14 — результат: r = –4. Однако мы должны прибавить модуль (14), чтобы сделать остаток неотрицательным. Мы имеем r = –4 + 14 = 10. Это означает, что –18 mod 14 = 10.

г. Разделим (–7) на 10 — результат: r = –7. После добавления модуля –7 мы имеем r = 3. Это означает, что –7 mod 10 = 3.

Система вычетов: Zn

Результат операции по модулю n — всегда целое число между 0 и n - 1. Другими словами, результат a mod n — всегда неотрицательное целое число, меньшее, чем n. Мы можем сказать, что операция по модулю создает набор, который в модульной арифметике можно понимать как систему наименьших вычетов по модулю n, или Zn. Однако мы должны помнить, что хотя существует только одно множество целых чисел ( Z ), мы имеем бесконечное число множеств вычетов ( Zn ), но лишь одно для каждого значения n. Рисунок 2.10 показывает множество Zn и три множества Z2, Z6 и Z11.

 Некоторые наборы Zn

Рис. 2.10. Некоторые наборы Zn

Сравнения

В криптографии мы часто используем понятие сравнения вместо равенства. Отображение Z в Zn не отображаются "один в один". Бесконечные элементы множества Z могут быть отображены одним элементом Zn. Например, результат 2 mod 10 = 2, 12 mod 10 = 2, 22 mod 10 = 2, и так далее. В модульной арифметике целые числа, подобные 2, 12, и 22, называются сравнимыми по модулю 10 (mod 10). Для того чтобы указать, что два целых числа сравнимы, мы используем оператор сравнения ( \equiv ). Мы добавляем mod n к правой стороне сравнения, чтобы определить значение модуля и сделать равенство правильным. Например, мы пишем:

2 \equiv  12 (mod \ 10)   \ \    13 \equiv  23 (mod \ 10)  \ \   34 \equiv  24 (mod \ 10) \ \     –8 \equiv  12 (mod \ 10)
\\
3 \equiv  8 (mod \ 5)  \ \       8 \equiv  13 (mod \ 5)   \ \     23 \equiv  33 (mod \ 5)   \ \    -8 \equiv  2 (mod \ 5)

Рисунок 2.11 показывает принцип сравнения. Мы должны объяснить несколько положений.

a. Оператор сравнения напоминает оператор равенства, но между ними есть различия. Первое: оператор равенства отображает элемент Z самого на себя; оператор сравнения отображает элемент Z на элемент Zn. Второе: оператор равенства показывает, что наборы слева и справа соответствуют друг другу "один в один", оператор сравнения — "многие — одному".

 Принцип сравнения

Рис. 2.11. Принцип сравнения

б. Обозначение ( mod n ), которое мы вставляем с правой стороны оператора сравнения, обозначает признак множества ( Zn ). Мы должны добавить это обозначение, чтобы показать, какой модуль используется в отображении. Символ, используемый здесь, не имеет того же самого значения, как бинарный оператор в уравнении деления. Другими словами, символ mod в выражении 12 mod 10 — оператор; а сочетание ( mod 10 ) в сравнении 2 \equiv 12(\bmod 10) означает, что набор — Z10.

Система вычетов

Система вычетов [a], или [a]n, — множество целых чисел, сравнимых по модулю n. Другими словами, это набор всех целых чисел, таких, что x = a (mod n). Например, если n = 5, мы имеем множество из пяти элементов [0], [1], [2], [3] и [4], таких как это показано ниже:

[0] = {…., –15, -10, –5,  0, 5, 10, 15, …}
[1] = {…., –14, –9, –4,  1,  6 , 11, 16,…}
[2] = {…., –13,   –8,  –3,  2,  7,  12, 17,…}
[3] = {...., –12,  –7,   –2,  3,  8,  13, 18,…}
[4] = {….,  –11,  –6, –1, 4,  9,  14, 19,…}

Целые числа в наборе [0] все дают остаток 0 при делении на 5 (сравнимы по модулю 5 ). Целые числа в наборе [1] все дают остаток 1 при делении на 5 (сравнимы по модулю 5 ), и так далее. В каждом наборе есть один элемент, называемый наименьшим (неотрицательным) вычетом. В наборе [0] это элемент 0 ; в наборе [1]1, и так далее. Набор, который показывает все наименьшие вычеты: Z5 = {0, 1, 2, 3, 4}. Другими словами, набор Zn — набор всех наименьших вычетов по модулю n.

Круговая система обозначений

Понятие "сравнение" может быть лучше раскрыто при использовании круга в качестве модели. Так же, как мы применяем линию, чтобы показать распределение целых чисел в Z, мы можем использовать круг, чтобы показать распределение целых чисел в Zn.

 Сравнение использования  диаграмм для Z и Zn

Рис. 2.12. Сравнение использования диаграмм для Z и Zn

Рисунок 2.12 позволяет сравнить два этих подхода. Целые числа от 0 до n–1 расположены равномерно вокруг круга. Все целые числа, сравнимые по модулю n, занимают одни и те же точки в круге. Положительные и отрицательные целые числа от Z отображаются в круге одним и тем же способом, соблюдая симметрию между ними.

Пример 2.15

Мы пользуемся сравнением по модулю в нашей ежедневной жизни; например, мы применяем часы, чтобы измерить время. Наша система часов использует арифметику по модулю 12. Однако вместо 0 мы берем отсечку 12, так что наша система часов начинается с 0 (или 12 ) и идет до 11. Поскольку наши сутки длятся 24 часа, мы считаем по кругу два раза и обозначаем первое вращение как утро до полудня, а второе — как вечер после полудня.

Операции в Zn

Три бинарных операции ( сложение, вычитание и умножение ), которые мы обсуждали для Z, могут также быть определены для набора Zn. Результат, возможно, должен быть отображен в Zn с использованием операции по модулю, как это показано на рис. 2.13.

 Бинарные операции в  Zn

Рис. 2.13. Бинарные операции в Zn

Фактически применяются два набора операторов: первый набор — один из бинарных операторов ( + ,-, \times ) ; второй — операторы по модулю. Мы должны использовать круглые скобки, чтобы подчеркнуть порядок работ. Как показано на рис. 2.13, входы ( a и b ) могут быть членами Z или Zn.

Пример 2.16

Выполните следующие операторы (поступающие от Zn ):

а. Сложение 7 и 14 в Z15

б. Вычитание 11 из 7 в Z13

в. Умножение 11 на 7 в Z20

Решение

Ниже показаны два шага для каждой операции:

(14+7) mod 15 -> (21) mod 15 = 6     
(7–11) mod 13 -> (-4) mod 13 = 9     
(7x11) mod 20 -> (77) mod 20 = 17

Пример 2.17

Выполните следующие операции (поступающие от Zn ):

a. Сложение 17 и 27 в Z14

b. Вычитание 43 из 12 в Z13

c. Умножение 123 на -10 в Z19

Решение

Ниже показаны два шага для каждой операции:

(17 + 27) mod 14 -> (44) mod 14 = 2
(12 – 43) mod 13 -> (–31) mod 13 = 8
((123) x (–10)) mod 19 -> (–1230) mod 19 = 5
Свойства

Мы уже упоминали, что два входа для трех бинарных операторов в сравнении по модулю могут использовать данные из Z или Zn. Следующие свойства позволяют нам сначала отображать два входа к Zn (если они прибывают от Z ) перед выполнением этих трех бинарных операторов ( + ,-, \times ). Заинтересованные читатели могут найти доказательства для этих свойств в приложении Q.

Свойства оператора mod

Рис. 2.14. Свойства оператора mod

Первое свойство: (a + b) mod n = [(a mod n) + (b mod n)] mod n

Второе свойство: (a – b) mod n = [(a mod n) - (b mod n)] mod n

Третье свойство: (a x b) mod n = [(a mod n) x (b mod n)] mod n

Рисунок 2.14 показывает процесс до и после применения указанных выше свойств. Хотя по рисунку видно, что процесс с применением этих свойств более длинен, мы должны помнить, что в криптографии мы имеем дело с очень большими целыми числами. Например, если мы умножаем очень большое целое число на другое очень большое целое число, которое настолько большое, что не может быть записано в компьютере, то применение вышеупомянутых свойств позволяет уменьшить первые два операнда прежде, чем начать умножение. Другими словами, перечисленные свойства позволяют нам работать с меньшими числами. Этот факт станет понятнее при обсуждении экспоненциальных операций в последующих лекциях.

Пример 2.18

Следующие примеры показывают приложение вышеупомянутых свойств.

  1. \left( {1723345 + 2124945} \right)\bmod 11 = \left( {8 + 9} \right)\bmod 11 = 6
  2. \left( {1723345 - 2124945} \right)\bmod 11 = \left( {8 - 9} \right)\bmod 11 = 10
  3. \left( {1723345 \times 2124945} \right)\bmod 11 = \left( {8 \times 9} \right)\bmod 11 = 6

Пример 2.19

В арифметике мы часто должны находить остаток от степеней числа 10 при делении на целое число. Например, мы должны найти 10 mod 3, 102 mod 3, 103 mod 3, и так далее. Мы также должны найти 10 mod 7, 102 mod 7, 103 mod 7, и так далее. Третье свойство модульных операторов, упомянутое выше, делает жизнь намного проще.

10n mod x = (10 mod x)n  Применение третьего свойства n раз.

Мы имеем

10 mod 3 = 1 -> 10n mod 3 = (10 mod 3)n  = 1
10 mod 9 = 1 -> 10n mod 9 = (10 mod 9)n = 1
10 mod 7 = 3 -> 10n mod 7 = (10 mod 7)n  = 3n mod 7

Пример 2.20

Мы уже говорили, что в арифметике остаток от целого числа, разделенного на 3, такой же, как остаток от деления суммы его десятичных цифр. Другими словами, остаток от деления 6371 равен остатку от деления суммы его цифр (17), на 3. Мы можем доказать, что это утверждение использует свойства модульного оператора. Запишем целое число как сумму его цифр, умноженных на степени 10.

a = an10n +………+ a1101 + a0100
Например: 6371 = 6 x 103 + 3 x 102+ 7 x 101+ 1 x 100

Теперь мы можем применить модульную операцию к двум сторонам равенства и использовать результат предыдущего примера, где остаток 10n mod 3 равен 1.

a mod 3 = (an x 10n +…+ a1 x 101+ a0 x 100) mod 3
= (an x 10n) mod 3 +…+ (a1 x 101) mod 3 + (a0 x  100 mod 3) mod 3
= (an mod 3) x (10n mod 3) +…+ (a1 mod 3) x (101 mod 3) +
 (a0 mod 3) x (100 mod 3) mod 3
 = ((an mod 3) +…+ (a1 mod 3) +  (a0 mod 3)) mod 3
= (an +…+ a1  +  a0) mod 3
< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989