Главная страница
Навигация по странице:

  • Алгоритм Евклида

  • Разработать

  • ТЧМК. 02 - ТЧМК - ПЗ-2 - НДВ. Занятие 2 Решение задач по алгебраическим основам криптографии


    Скачать 18.3 Kb.
    НазваниеЗанятие 2 Решение задач по алгебраическим основам криптографии
    Дата30.10.2022
    Размер18.3 Kb.
    Формат файлаdocx
    Имя файла02 - ТЧМК - ПЗ-2 - НДВ.docx
    ТипЗанятие
    #762378





    Практическое занятие №2


    «Решение задач по алгебраическим основам криптографии»

    Цель занятия: приобретение навыков решения типовых задач по алгебраическим основам криптографии.

    Теоретическаячасть.


    Одной из актуальных теоретико-числовых задач, используемых в криптографии, является отыскание наибольшего общего делителя двух чисел и его линейного представления.

    Пусть MOD(a, b) есть операция взятия остатка от деления a на b, а QUO(a, b) есть частное от деления a на b. Алгоритм Евклида позволяет без разложения двух целых чисел на множители находить их наибольший общий делитель. В данном алгоритме используется следующее утверждение: если a= bq + r, где b 0, и число dделит aи b, то оно делит и r, т. е. имеем d| (a bq). Это утверждение верно для любого делителя, включая наибольший общий делитель d = НОД(a, b). Отсюда следует, что НОД(a,b) = НОД[b, MOD (a, b)].

    Для всякого aимеем также НОД(a,0) = |a|. Определит также НОД(0,0) = 0. Пусть заданы целое число aи ненулевое целое число b. Алгоритм Евклида предполагает выполнение следующей последовательности делений, где принято обозначение a0 = aи a1 = b:

    a0 = a1q1 + a2, 0 < a2 < |a1|,

    a1 = a2q2 + a3, 0 < a3 < a2,



    ak-2 = ak-1qk-1 + ak, 0 < ak<ak-1,

    ak-1 = akqk+ 0.

    Процесс деления имеет конечное число шагов, поскольку остатки убывают по абсолютной величине |a1| > a2 > a3 >…> 0 (значение a1 может быть отрицательным, поэтому оно взято по абсолютной величине; остальные остатки положительны). Значение akявляется наибольшим общим делителем. С учетом указанного выше утверждения имеем

    НОД(a0, a1) = НОД(a1, a2) =…= НОД(ak, 0) = ak,

    т. е. на самом деле akявляется наибольшим общим делителем чисел a и b. Одновременно мы показали, что приведенный ниже алгоритм работает правильно. Обозначим операцию присвоения следующим образом: x := yозначает присвоение переменной xзначения y; (x,y) := (x1,y1) означает выполнение операций x:=x1 и y:=y1.

    Алгоритм Евклида (нахождение НОД(a, b)) Вход: aи b 0.

    1. (a0, a1) := (a, b).

    2. Пока a1  0 выполнять (a0, a1) := [a1, MOD (a0, a1)] 3. d := a0.

    Выход: d= НОД(a, b).

    В любой строке, описанного выше алгоритма Евклида, каждый остаток представляет собой линейное представление делимого и делителя. Очевидно, что, начиная с одного из ненулевых остатков (например, последнего, т. е. начиная с ak) и выражая остатки, полученные на последующих шагах алгоритма Евклида, через остатки, полученные на предыдущих шагах, можно представить значение ai(соответственно, ak) в следующем виде ai= ax + by (соответственно, ak= ax + by), где xи yнекоторые целочисленные коэффициенты. Расширенный алгоритм Евклида позволяет вычислить значения коэффициентов xи yв указанном линейном представлении НОД(a, b), т. е. в выражении ak= ax + by. Работа расширенного алгоритма Евклида организуется так, что значения x и yвычисляются в серии шагов, в каждом из которых мы выражаем aiв виде указанного представления.

    Каждый остаток, вычисленный в процессе работы алгоритма Евклида можно представить в виде axi+ byi.Рассмотрим следующую последовательность такого представления остатков:

    a0 = a, a0 = ax0 + by0,

    a1 = b, a1 = ax1 + by1,

    a2 = a0 a1 q1, a2 = ax2 + by2,



    ai= ai-2 ai-1 qi-1, ai= axi+ byi,



    ak= ak-2 ak-1 qk-1, ak= axk+ byk,

    0=ak-1 akqk, 0 = axk+1 + byk+1.

    В левом столбце фактически приведена последовательность делений, полученная в алгоритме Евклида, но записанная в виде выражения для вычисления остатков. В правом столбце каждый остаток выражен в интересующем нас виде axi+ byi. Пока мы не знаем коэффициентов. Нашей целью является вычисление xiи yiдля любого i, а следовательно и для i = k. Очевидно, что x0=1, y0=0 и x1=0, y1=1. Сравнивая обе части на i шаге, получаем

    ai= axi+byi= ai-2ai-1qi-1 = (axi-2+byi-2) (axi-1+byi-1)qi-1 = a(xi-2xi-1qi-1) + b(yi-2yi-

    1qi-1),

    откуда получатся следующая индуктивная процедура вычисления xiи yi: qi-1 = QUO(ai-2, ai-1)

    ai = ai-2 ai-1qi-1, xi = xi-2 xi-1qi-1, yi= yi-2 yi-1qi-1.

    Отметим, что значение aiможет быть вычислено как MOD(ai-2, ai-1), но достоинство приведенного выше выражение заключается в том, что aiвычисляется аналогично вычислению коэффициентов xiи yi. Этот факт используется в следующем алгоритме.

    Расширенный алгоритм Евклида


    Вход: aи b 0

    1. (a0, a1) := (a, b); (x0, x1) := (1, 0); (y0, y1) := (0, 1).

    2. Пока a1  0 выполнять

    {q := QUO(a0, a1); (a0, a1) := (a1, a0-a1q);

    (x0, x1) := (x1, x0-x1q);

    (y0, y1) := (y1, y0-y1q)}.

    3. (d, x, y) := (a0, x0, y0).

    Выход: Значения d, x, y, такие, что d = НОД(a, b) = ax+ by.

    Вычисление функции Эйлера


    Определение Функция :

    , ставящая в соответствие каждому

    натуральному числу тколичество

    m

    натуральных чисел, меньших т


    и взаимно простых с т,называется функциейЭйлера.При этом полагают

    1 1.

    Функция Эйлера обладает свойством мультипликативности: если

    НОД(т,п) 1, то mn m n.

    Если число p простое, то случай теоремы Эйлера.

    p p 1.

    Отсюда получаем частный

    Теорема (малая теорема Ферма). Пусть число pпростое, число a

    целое, aне делится на р. Тогда аp1 1(modp).

    Рассмотрим способ вычисления функции Эйлера.

    Теорема. Если число р простое, число п натуральное, то

    pn pn pn1.

    Заданиена Практическоезанятие2.


    Разработать программу, реализующую алгоритмы:

    • Евклида и расширенный алгоритм Евклида;

    • вычисления функции Эйлера, символов Лежандра и Якоби;

    • поиска квадратичных и кубических вычетов.


    написать администратору сайта