Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Аm º bm (mod n)º (b mod n) m mod n






Пример:

Пример:

Найти остаток от деления числа на 11.

 

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

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

Вычисление степени числа а по модулю n

можно выполнить как ряд умножений и делений. Существуют способы сделать это быстрее. Поскольку эти операции дистрибутивны, быстрее произвести возведение в степень как ряд последовательных умножений, выполняя каждый раз приведение по модулю. Это особенно заметно, если работать с длинными числами (200 бит и более).

Например, если нужно вычислить ,

не следует применять примитивный подход с выполнением семи перемножений и одного приведения по модулю громадного числа:

(а*а*а*а*а*а*а*а) mod n.

Вместо этого выполняют три малых умножения и три малых приведения по модулю:

((a2 mod n)2 mod n)2 mod n.

Тем же способом вычисляют

a16 mod n = (((a2 mod n)2 mod n)2 mod n)2 mod n.

Вычисление

,

где х не является степенью 2, лишь немного сложнее.

Двоичная запись числа х позволяет представить число х как сумму степеней 2:

х = 25(10) ®11 0 0 1(2), поэтому 25 = 24 + 23 + 20=16+8+1.

Тогда

a25 mod n = (а * a24) mod n = (а * а8 * a16) mod n = = а * ((а2)2)2 * (((a2)2)2)2 mod n = ((((а2 * а)2)2)2 * a) mod n.

При разумном накоплении промежуточных результатов потребуется только шесть умножений:

(((((((a2 mod n) * a) mod n)2 mod n)2 mod n)2 mod n) * a) mod n.

Этот метод уменьшает трудоемкость вычислений до 1, 5k операций в среднем, где k-длина числа в битах

Поскольку многие алгоритмы шифрования основаны на возведении в степень по модулю n, целесообразно использовать алгоритмы быстрого возведения в степень.


Пример

 
 

Вернемся к алгоритму Эвклида и запишем его алгоритм, с использованием модулярной арифметики. Для описания алгоритма допустим, что , , , тогда

Найден НОД (a, b) =n

Пример Найти НОД (21, 15)

 
 

т.о. НОД (21, 15)=3.

Проверка согласно свойству 2.1.:


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал