Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
59
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

M22. Вычисление остатка с использованием модульной арифметики

  1. То, что запись числа (59)96 содержит 171 цифру, следует из того факта, что

96log10(59)=96(1.77085...)=170.0018...

Отсюда вытекает, что число (59)96 заключено между величинами 10170 и 10171, и следовательно, его запись содержит 171 цифру.

  1. При использовании модульной арифметики бывает выгодно вычесть из показателя степени максимально возможную степень двойки, затем возвести число в степень (нечетного) остатка, и наконец, последовательно возводя его в квадрат, найти требуемое значение. Так, например, поскольку 96=332, то если мы вычислим (59)3(mod 97) и последовательно возведем это значение в квадрат пять раз, на каждом этапе приводя результат по модулю 97, то в результате получим нужное нам число. В деталях это выглядит так:

5959=3481=3597+86,

следовательно,

(59)38659=5074=5297+3030(mod 97),

поэтому

(59)6(30)2=900=997+2727(mod 97),

поэтому

(59)12(27)2=729=797+5050(mod 97),

следовательно,

(59)24(50)2=2500=2597+7575(mod 97),

следовательно,

(59)48(75)2=5625=5797+9696(mod 97) -1(mod 97),

и наконец,

(59)96(-1)2=1(mod 97),

то есть, как и утверждалось, (59)96 дает при делении на 97 остаток 1.

М23. Доказательство теоремы Ферма-Эйлера

Полезно будет начать с доказательства малой теоремы Ферма; в этом случае обобщение на случай теоремы Ферма-Эйлера остановится почти очевидным.

Малая теорема Ферма утверждает, что

Если p - простое число, то для любого целого числа M, которое не делится на p, справедливо

M(p-1)1(mod p).

Доказательство

Полное множество вычетов ("остатков") по модулю p для чисел, которые не делятся на p, есть

1, 2, 3, ..., (p-1).

Умножим каждое из этих чисел на M:

M, 2M, 3M, ..., (p-1)M.

Никакая пара из этого множества чисел не дает по модулю p одного и того же вычета, так как если бы, например, выполнялось

aM  bM(mod p),

то в этом случае число M(a-b) делилось бы на p. Однако M не делится на p, а числа a и b оба меньше p. Поэтому все (p-1) этих чисел будет различны по модулю p. Следовательно, это то же самое множество чисел

1, 2, 3, ..., (p-1),

только переставленное в некотором порядке. Поэтому

M2M3M...((p-1)M)  123...(p-1)(mod p)=(p-1)!(mod p).

Поскольку число (p-1)! не имеет общих делителей с p, то его можно исключить из обеих частей последнего сравнения, после чего получаем:

M(p-1)1(mod p),

что и доказывает Малую теорему Ферма.

Доказательство теоремы Ферма-Эйлера

Теперь мы имеем дело с составным модулем N. Доказательство выполняется аналогично предыдущему, но теперь вместо использования всех вычетов по модулю p мы должны рассмотреть только те из них, которые не имеют с N общих делителей. Если обозначить их через

a1, a2,..., ak,

где k=(N), а (N) - это функция Эйлера, определенная в М11. Если каждый из этих вычетов умножить на M, то они, как и ранее, все останутся различными, так как если бы выполнялось

Mar  Mas (mod N),

то M(ar-as) делилось бы на N. Но это невозможно, так как M не имеет с N общих делителей, а (ar-as) меньше N. Итак, мы доказали, что

если M не имеет с N общих делителей, то

M(N)1(mod N),

и теорема Ферма-Эйлера доказана.

В системе шифрования RSA нам понадобится только частный случай, когда N=pq, где p и q - два различных простых числа. В этом случае (N)=(p-1)(q-1).