Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзам крипто.docx
Скачиваний:
21
Добавлен:
24.09.2019
Размер:
94.98 Кб
Скачать
  1. Теоремы ферма и Эйлера, их разложение к задаче вычисления степени числа по модулю.

Функция Эйлера может быть использована для возведение больших чисел в большую степень по модулю. Имеется целое число А возводим его в целое число Х и требуется взять модуль – тоже некоторое целое число M и получить остаток от этого числа r.(ax)mod m = r.

Если p — простое число и a не делится на p, то a p — 11 (mod p) – малая теорема Ферма(Частный случай теоремы Эйлера).

Пример.

Пусть дано:

a=2,

х=5432675,

m=p=13 Теорема Эйлера (a(m))mod m 1.

m – целое, а – взаимное простое с m.

Теорема Эйлера утверждает, что остаток будет равен 1

Если m простое, то (р)=p-1

ap-1 = 1modp

1) Находим функцию Эйлера для числа m=p=13, т.е. исходя из малой т.Ферма (р)=p-1=12.

2) Число х представляем черех функцию Эйлера

х=5432675=q (р)+r = 452722*12+11=4352722+11

  1. Вычисляем

(24352722*12+11)mod13=(24352722*12*211)mod13=[(24352722*12mod13)(211mod13)]mod13=

=(24352722*12+11)mod13=7

Здесь сомножитель (2435272*12)mod13 по теореме Эйлера равен 1.

  1. Сравнение, свойства сравнений.

Под операцией a mod m понимается операция взятия целочисленного остатка от деления числа a на число m, где a и m - целые числа.

Запись в модульной арифметике a ≡ b mod m или a = b + k·m, где a, b, m - целые числа, m ≠ 0, k - некоторое целое число. Отсюда следует, что m делит (a - b) нацело: m/(a-b) или (a-b)modm=0. Число b называют вычетом числа a по модулю m. Операция a mod m назыв-ся приведением числа a по модулю m

Ряд целых чисел от 0 до (m - 1) называется полным набором вычетов по модулю m. Для любого целого a (a>0) его вычет r по модулю m принадлежит интервалу r = . Число r можно найти перебором из системы:

{r=a-km, kz, r = 0,m 1.}, перебирая все значения k.

Свойства операций сравнения состоят из 3 групп:

I)Свойства, определяемые отношением эквивалентности

1) Рефлективность a ≡ a mod m

2) Симметричность a ≡ b mod m, b mod a ≡ m

a(m) mod m≡1 или a(m)≡1mod m

3) Транзитивность. Если a ≡ b mod m и b mod c ≡ m, то a ≡ с mod m

II) Свойства сравнимости по модулю 2 аналогичны свойствам равенства

1)Если a1 ≡ b1 modm и a2 ≡ b2 modm, то(a1+a2)mod m=(b1+b2)mod m

2)Если a1 ≡ b1 modm и a2 ≡ b2 modm, то(a1*a2)mod m=(b1*b2) modm

3) Если a ≡ b mod m, (k,m)=1, тогда ak=bmmod m

4) Если a ≡ b mod m, тогда ak ≡bk mod m, где k- натуральное.

III) Свойства, отличающихся от свойств равенства

5) Имеем a, b – числа, m – модуль (a,b) ≡ d – НОД, (d,m)≡1, a ≡ b mod m, тогда a/d ≡ b/d mod m

6) b*a ≡ b mod m, d –такое что a/d, b/d, m/d, тогда a/d≡b/d mod (m/d)

7) (a+b) mod m ≡ [a mod m + b mod m] mod m

8) a*b mod m ≡ [(a mod m)*(b mod m)] mod m

Теорема Эйлера.

a(m)≡1 mod m

  1. Классы вычетов. Полная и приведенная система вычетов

a ≡ b mod m

a ≡ c mod m

a ≡ d mod m

Сравнимость по mod n является отношением эквивалентности на множестве Z целых чисел. Классами вычетов по mod n, являются следующие множества - разбиения Z :

[О] = {..., -2n, -n, О, n, 2n, ...},

[1]= {..., -2n+l, -n+l, 1, n+l, 2n+l, ...},

...

[n-l]={..., -n-l, -1, n-l, 2n-l, 3n-l, ...}.

Пример. Определим классы вычетов по mod 7:

[0]= {..., -14, -7, 0, 7, 14, 21, ...},

[1]= {..., -13, -6, 1, 8, 15, 22, ...},

[2]= {..., -12, -5, 2, 9, 16, 23, ...},

[3]= {..., -11, -4, 3,10,17, 24, ...},

[4] ={..., -10, -3, 4, 11, 18, 25, ...},

[5] ={..., -9, -2, 5, 12, 19, 26, ...},

[6] ={..., -8, -1, 6, 13, 20, 27, ...}.

Число классов вычетов совпадает со значением модуля.

Число чисел в классе бесконечно.

В каждом классе свои числа – они больше нигде не встречаются – пересечений нет.

Полная система вычетов – когда из любого класса берется по одному представителю. Приведенная система вычетов – система, состоящая из взаимно простых вычетов.

  1. Схема Горнера.

На вход: числа a, x, m.

На выходе: y или сообщение о неприменимости алгоритма.

1. Ввод a, x, m.

2. Если m = 0, то деление на ноль, выход.

3. Если a = 0, то результат равен y = 0, переход к пункту 9.

4. Если a = 1 или x = 0, то результат равен y = 1, переход к пункту 9.

5. Производим поиск для числа x верхней границы, являющейся степенью числа 2: число k такое, что x ≤ 2k.

а) Пусть r = 20 и k = 0; пока k < 32 (максимальное число разрядов в машинном слове) и r ≤ x, то возводим 2 в степень k: r = 2k и увеличиваем k на единицу.

б) Если k = 0 или k > 32, то задача не решается в установленных условиях, выход

6. Пусть r = a. Если степень x нечетна (остаток от деления на 2 равен единице), то y = a, иначе y = 1.

7. Для всех i= выполняем следующие действия:

а) r = [(r mod m)·(r mod m)] mod m = r2 mod m;

б) если i-ый бит числа x равен единице xi =1, то y=(y*r)mod m.

8. Вывод результата y. Выход.

Вычислительная сложность схемы Горнера равна O(log32(x)).

Второй вариант схемы Горнера.

Первые 6 шагов совпадают с алгоритмом первого варианта схемы Горнера.

7. Пусть результат y=1, переменная циклa i=k−1 и r=a2 mod m.

8. Если xi = 1, то y=(y2 ·r)modm,

иначе y = y2 mod m.

9. Вычислить i = i − 1. Если i > 1, то перейти к шагу 8.

10. Если x0 = 1, то y = (y · a) mod m.

11. Вывод результата y. Выход.