Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗИ готовый.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
525.77 Кб
Скачать

39.Простой и обобщенный алгоритмы Эвклида

Алгори́тм Евкли́даалгоритм для нахождения наибольшего общего делителя двух целых чисел. Алгоритм Евклида был известен в древнегреческой математике по крайней мере за век до Евклида под названием «антифайресис» — «последовательное взаимное вычитание». Евклид описал его в VII книге «Начал» для чисел и в X книге «Начал» — для величин.

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

Пусть a и b суть целые числа, не равные одновременно нулю, и последовательность чисел

определена тем, что каждое rk это остаток от деления пред-предыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, т. е.

a = bq0 + r1

b = r1q1 + r2

r1 = r2q2 + r3

rn − 1 = rnqn

Тогда (a,b), наибольший общий делитель a и b, равен rn, последнему ненулевому члену этой последовательности.

Существование таких r1,r2,..., то есть возможность деления с остатком m на n для любого целого m и целого , доказывается индукцией по m.

Корректность этого алгоритма вытекает из следующих двух утверждений:

  • Пусть a = bq + r, тогда (a,b) = (b,r).

  • (0,r) = r. для любого ненулевого r.

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

Формулы для ri могут быть переписаны следующим образом:

r1 = a + b( - q0)

r2 = br1q1 = a( − q1) + b(1 + q1q0)

(a,b) = rn = as + bt

здесь s и t целые. Это представление наибольшего общего делителя называется соотношением Безу, а числа s и tкоэффициентами Безу. Соотношение Безу является ключевым в доказательстве основной теоремы арифметики.

Связь с цепными дробями

  • Отношение a / b допускает представление в виде цепной дроби:

.

  • Отношение - t / s, в расширенном алгоритме Евклида допускает представление в виде цепной дроби:

.

Ускоренные версии алгоритма

Алгоритм может быть записан в общем виде не только для целых чисел, но и для полиномов. Строго говоря, алгоритм работает в любом евклидовом кольце. Одним из методов ускорения целочисленного алгоритма Евклида является выбор симметричного остатка:

причем

Одна из наиболее многообещающих версий ускоренного алгоритма Евклида для полиномов основывается на том, что промежуточные значения алгоритма в основном зависят от высоких степеней. При применении стратегии Divide & Conqurer наблюдается большое ускорение асимптотической скорости алгоритма.

40. Шифр Шамира

Этот шифр, предложенный Шамиром {Adi Shamir), был первым, позволяющим организовать обмен секретными сообщениями по от­крытой линии связи для лиц, которые не имеют никаких защищен­ных каналов и секретных ключей и, возможно, никогда не видели друг друга. (Напомним, что система Диффи-Хеллмана позволяет сформировать только секретное слово, а передача сообщения потре­бует использования некоторого шифра, где это слово будет исполь­зоваться как ключ.)

Перейдем к описанию системы. Пусть есть два абонента Аи В, соединенные линией связи. А хочет передать сообщение m абоненту Б так, чтобы никто не узнал его содержание. А выбирает случай­ное большое простое число р и открыто передает его В. Затем А выбирает два числа сА и dA , такие, что

сАdA mod (р - 1) = 1.

Эти числа А держит в секрете и передавать не будет. В тоже вы­бирает два числа св dв, такие, что

и держит их в секрете.

св<dв mod (p - 1) = 1,

После этого А передает свое сообщение m, используя трехсту­пенчатый протокол. Если m < р (m рассматривается как число), то сообщение т передается сразу , если же т р, то сообще­ние предствляется в виде m1, m2,..., mt, где все mi < р, и затем передаются последовательно m1, m2,..., mt. При этом для кодиро­вания каждого mi лучше выбирать случайно новые пары (cA,dA) и (cB,dB) — в противном случае надежность системы понижается. В настоящее время такой шифр, как правило, используется для пере­дачи чисел, например, секретных ключей, значения которых меньше р. Таким образом, мы будем рассматривать только случай m < р.

Описание протокола.

Шаг 1. А вычисляет число

Х1 =mСА modp

где m — исходное сообщение, и пересылает х1 к В.

Шаг 2. В, получив х1, вычисляет число

X2 = х2CB mod p

и передает х2 к А.

Шаг 3. А вычисляет число

X3 = х2dA mod p

и передает его В.

Шаг 4. В, получив х3, вычисляет число

X4 = x3dB mod p.