Студопедия

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

Разделы сайта

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






Бинарные отношения 4 страница






Так как каждый многочлен положительной степени можно записать в виде произведения неприводимых многочленов (каноническая форма представления многочленов), то вычисление порядков многочленов значительно упрощается, если знать, как находить порядок неприводимого многочлена и произведения попарно взаимно простых многочленов. Ответ на этот вопрос дают следующие теоремы.

Лемма. Пусть с – натуральное число. Многочлен f (x) Î Fq [ x ], удовлетворяющий условию f(0) ¹ 0 делит двучлен xc - 1 тогда и только тогда, когда ord (f (x)) делит число с.

Следствие. Если е1 и е2 натуральные числа, то НОД многочленов (xe1 -1) и (xe2 -1) в Fq[x] равен (xd -1), где d = НОД(е1, е2).

Теорема. Пусть n Î N и g(x) – неприводимый многочлен над конечным полем характеристики p, такой что g(0) ¹ 0. Тогда для многочлена вида

f(x) = gn(x) имеем ord(f(x)) = ord(gn(x)) = pt ord(g(x)),

где t – наименьшее целое число, для которого pt ³ n.

Теорема. Пусть g1(x),..., gk(x) – попарно взаимно простые ненулевые многочлены над полем Fq, и пусть f(x) = g1(x)× g2(x)·...·gK(x), тогда

ord(f(x)) = ord(g1(x))× ord(gK(x)) = НОК(ord(g1(x),..., ord(gK).

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

Пример 30. Имеется многочлен вида f(x) = x10 + x9 + x3 + x2 + 1Î F2[x].

Каноническое разложение f(x) над полем F2 имеет вид

f(x) = (x2+x+1)3(x4+x+1). Так как ord(x2 + x + 1) = 3 и имея

ord(gn(x) = pt ord(g(x)), получаем, что ord((x2 + x + 1)3) = 22× 3 = 12 так как у нас F2 то есть p = 2 и t = 2 чтобы 22 > 3. Далее ord(x4 + x + 1) = 15. Тогда ord(f(x)) = НОК(12, 15) = 60.

 


4. ТЕОРЕТИКО – ЧИСЛОВЫЕ МОДЕЛИ криптологии

4.1. Основная теорема арифметики

Целое число s называется делителем (или множителем) целого числа n, если n = s∙ t для некоторого t Î Z. В свою очередь n называется кратным s. Делимость n на s обозначается символом |. Делимость – транзитивное свойство на множестве Z. Целое число p, делители которого исчерпываются числами ± p, ±1 (несобственные делители), называется простым. Обычно в качестве простых берутся положительные простые числа > 1.

Фундаментальную роль простых чисел вскрывает так называемая основная теорема арифметики.

Теорема. Каждое положительное целое число n ≠ 1 может быть записано в виде произведения простых чисел: n = p1∙ p2∙ p3∙ …∙ pS. Эта запись единственна с точностью до порядка сомножителей. (Без доказательства).

Собрав вместе одинаковые простые множители и изменив обозначения, получим запись n в виде: n = p11 p22 ∙ p33…pSS.

Теорема Евклида гласит, что множество P = {2, 3, 5, 7, 11, 13, …} всех простых чисел бесконечно.

 

4.2. Свойства чисел

1. Каждое натуральное число n > 1 имеет хотя бы один простой делитель.

2. Наименьший простой делитель составного числа n не превосходит Ö n.

3. Если p – простое число, то любое целое число а либо взаимно простое с р, либо делится на р т.е. р|а.

 

Построение в настоящие время таблицы простых чисел показывают, что с ростом их величин они встречаются все реже и реже. Например, в первой сотне чисел (N=100) их 25, во второй – 21, третьей 16 и т.д. В первой 1000 их 168, во второй тысяче – 135, в третьей – 120 и т.д. Особый класс простых чисел составляют числа вида 2n -1. Такие числа называют простыми числами Мерсенна и они являются наибольшими по своему размеру среди других известных простых чисел. Во времена Эйлера наибольшим простым числом было пятое число Мерсенна 231-1. Через сто лет было найдено шестое число Мерсенна 261-1. В 1992 найдено самое большое известное число Мерсенна. Его запись содержит 227 832 цифры и требует около ста страниц текста.

 

 

4.3. Алгоритм деления с остатком в множестве целых чисел

При заданных a, b Î Z, b > 0, всегда найдутся q, r Î Z такие, что a = bq + r, 0 ≤ r < b (теорема справедлива для любого целого b ≠ 0, при условии, что ограничение r < b заменяетсяна r < |b|).

Алгоритм деления в Z можно также использовать для определения наибольшего общего делителя (НОД), известного из школьного курса математики для заданных целых числах n, m, одновременно не равных нулю. Положим J = { nu + mv | u, v Î Z }. Выберем в J наименьший положительный элемент d = nu0 + mv0. Используя алгоритм деления, запишем n = dq + r, 0 ≤ r < d. Ввиду выбора d включение r = n – dq = n(nu0 + mv0)q = n (1– u0q) +

+ m (– v0q) Î J влечет равенство r = 0. Стало быть, d | n. Аналогично доказывается, что d | m.

Пусть теперь d' – любой делитель чисел n и m. Тогда d' | n, d ' |m Þ d' | nu0, d' | mv0 Þ d' | (nu0 + mv0) Þ d' |d.

Итак, d обладает всеми свойствами НОД, и поэтому d = НОД(n, m).

Мы пришли к следующему утверждению.

Наибольший общий делитель двух целых чисел n, m, не равных одновременно нулю, всегда записывается в виде НОД(n, m) = nu+mv; u, vZ.

В частности, целые числа n, m взаимно просты тогда и только тогда, когда nu + mv = 1 при некоторых u, vZ.

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

 

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

Это классический алгоритм вычисления наибольшего общего делителя целых чисел. Мы предполагаем заданными два натуральных числа a и b (a > b; a, b Î Z) и вычисляем их НОД (a, b).

1. Вычислим r – остаток от деления числа a на b, a = b*q +r, 0 ≤ r < b.

2. Если r =0, то b есть искомое число.

3. Если r ≠ 0, то заменить пару чисел (a, b) парой (a, r) и перейти к шагу 1.

a = b q 1 + r 1 0 ≤ r1 < b
b = r 1 q 2 + r 2 0 ≤ r2 < r1
r 1 = r 2 q 3 + r 3 0 ≤ r3 < r2
r 2 = r 3 q 4 + r 4 0 ≤ r4 < r3

...

r n -3 = r n -2 q n -1 + r n -1 0 ≤ rn-1 < rn-2
r n -2 = r n -1 q n + r n 0 ≤ rn < rn-1
r n -1 = r n q n +10 ≤ rn+1 = 0

r n – наибольший общий делитель чисел а и b.

Имеем: b > r 1 > r 2 >... > r n > 0, следовательно, процесс оборвется максимум через b шагов. При вычислении наибольшего общего делителя (a, b) с помощью алгоритма Евклида будет выполнено не более 5*p операций деления с остатком, где p есть количество цифр в десятичной записи меньшего из чисел a и b.

Алгоритма Евклида дает практический способ нахождения чисел u и v из Z таких, что r n = au + bv = (a, b).

Действительно, из цепочки равенств имеем:

r n = r n -2 - r n -1 q n = r n -2 - (r n -3 - r n -2 q n -1 ) q n =... = au + bv = (a, b).

(идем по цепочке равенств снизу вверх, выражая из каждого следующего равенства остаток и подставляя его в получившееся уже к этому моменту выражение).

Пример 31. Пусть а = 525, b = 231

525 = 231 · 2 + 63
231 = 63 · 3 + 42
63 = 42 · 1 + 21
42 = 21 · 2

Таким образом, (525, 231) = 21. Линейное представление наибольшего общего делителя: 21 = 63 - 42 · 1 = 63 - (231 - 63 · 3) · 1 =
= 525 - 231 · 2 - (231 - (525 - 231 · 2) · 3) = 525 · 4 - 231 · 9
,

и u и v из Z равны, соответственно, 4 и - 9. ▲

 

a. Диофантово уравнение первой степени

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

Поставим задачу отыскания целочисленного решения так называемого линейного диофантова уравнения:

ax - by = c, где a, b, c Î Z. (4.1)

Такое уравнение называется диофантовым. Рассмотрим два метода его решения.

Так как Z – евклидово факториальное кольцо, то в нем всегда возможно нахождение наибольшего общего делителя чисел a и b – (НОД(a, b)) при помощи алгоритма Евклида. Находим его. Если НОД(a, b) = 0, то уравнению удовлетворяют любые целые x и y. Если НОД(a, b) ¹ 0, и c не делитсяна НОД(a, b), то уравнение не имеет решения. Иначе производим сокращение коэффициентов a, b, c и получаем уравнение вида (4.1), но с взаимно простыми a, b, c .

При первом методе, для нахождения решения (4.1), число a/b обращают в конечную цепную дробь при помощи алгоритма Евклида:

a = b q0 + a1,

b = a1 q1+ a2,

a1 = a2 q2 + a3,

a2 = a3 q3 + a4,

………………………….

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

ak-1= ak qk + 0;

Цепная дробь имеет вид: a/b = [q0, q1, q2, …qk], а последовательности

{Pn} и {Qn} числителей и знаменателей подходящих дробей к цепной дроби определяются рекуррентно:

P-2 = 0, P-1= 1;

Q-2 = 1, Q-1 = 0;

при n ≥ 0 Þ Pn = qn∙ Pn-1 + Pn-2,

Qn = qn∙ Qn-1 + Qn-2.

 

Их вычисление удобно оформлять в виде таблицы:

n -2 -1       ... k-1 k
qn     q0 q1 q2 ... qk-1 qk
Pn     P0 P1 P2 ... Pk-1 Pk
Qn     Q0 Q1 Q2 ... Qk-1 Qk

 

Значения x = (-1)k-1 ∙ Qk-1;

y = (-1)k-1 ∙ Pk-1,

являются целочисленным решением уравнения (4.1).

Пример 32. Решить уравнение: 17745 * x - 19362240 * y = 15. (☼)

Находим НОД(17745, 19362240) = 15.

Производим сокращение коэффициентов a, b, c и получаем уравнение вида (4.1), но с взаимно простыми a, b, c .

1183 *x – 1290816 * y = 1. (☼ ☼)

Применяем алгоритм Евклида:

1183 = 1290816 * 0 + 1183

1290816 = 1183 * 1091 + 163

1183 = 163 * 7 + 42

163 = 42 * 3 + 37

42 = 37 * 1 + 5

37 = 5 * 7 + 2

5 = 2 * 2 + 1

2 = 1 * 2 + 0

k = 7;

 

Вычисляем промежуточные результаты и записываем их в виде таблицы:

n -2 -1                
qn                    
Pn                    
Qn                    

 

x = (-1)6 × 522655 = 522655;

y = (-1)6 × 479 = 479;

Проводим проверку:

(1183 * 522655 – 1290816 * 479 = 618300865 – 618300864 = 1).

Таким образом, x = 522655 и y = 479 являются решением уравнения ☼ ☼). Чтобы получить решение (☼), умножим x и y на НОД(17745, 19362240) = 15 и получим x = 522655 * 15 = 7 839 825 и y = 479 *15 = 7185. ▲

Второй метод решения (4.1) также опирается на алгоритм Евклида.

Последовательность действий такова.

 

E =
1. Определяем матрицу 1 0

0 1

2. Вычисляем r – остаток от деления числа a на b,

a = b*q +r, 0 ≤ r < b.

3. Если r = 0, то второй столбец матрицы E дает вектор x, y решений уравнения.

М =Е ´
4. Если r ≠ 0, то заменяем матрицу E матрицей 0 1

Q

5. Заменяем пару чисел (a, b) парой (b, r) и переходим к шагу 1.

Пример 33. Решить уравнение: 1183*x – 1290816*y = 1.

1 0

Определяем матрицу Е = 0 1

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

1183 = 1290816 * 0 + 1183.

Т.к. r ≠ 0, то заменяем матрицу Е матрицей М1

М1 = Е ´ 0 1 1 q = 1 0 0 1 ´ 0 1 1 0 = 0 1 1 0  

 

Заменяем пару (a, b) парой (b, r): a = 1290816; b = 1183.

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

1290816=1183 * 1091 + 163.

Т.к. r ≠ 0, то заменяем матрицу М1 матрицей М2

М2 = М1 ´ 0 1 1 q = 0 1 1 0 ´ 0 1 1 1091 = 1 1091 0 1  

 

Заменяем пару (a, b) парой (b, r): a = 1183; b=163.

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

1183 = 163*7 + 42.

Т.к. r ≠ 0, то заменяем матрицу М2 матрицей М3

М3= М2 ´ 0 1 1 q = 1 1091 0 1 ´ 0 1 1 7 = 1091 7638 1 7  

 

Заменяем пару (a, b) парой (b, r): a = 163; b = 42.

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

163 = 42*3 + 37.

Т.к. r ≠ 0, то заменяем матрицу М3 матрицей М4

 

М4= М3 ´ 0 1 1 q = 1091 7638 1 7 ´ 0 1 1 3 = 7638 24005 7 22  

 

Заменяем пару (a, b) парой (b, r): a = 42; b = 37.

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

42 = 37*1 + 5.

Т.к. r ≠ 0, то заменяем матрицу М4 матрицей М5

 

М5= М4 ´ 0 1 1 q = 7638 24005 7 22 ´ 0 1 1 1 = 24005 31643 22 29  

 

Заменяем пару (a, b) парой (b, r): a = 37; b = 5.

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

37 = 5*7 + 2.

Т.к. r ≠ 0, то заменяем матрицу М5 матрицей М6

 

М6= М5 ´ 0 1 1 q = 24005 31643 22 29 ´ 0 1 1 7 = 31643 245506 29 225  

 

Заменяем пару (a, b) парой (b, r): a = 5; b = 2.

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

5 = 2*2 + 1.

Т.к. r ≠ 0, то заменяем матрицу М6 матрицей М7

М7= М6 ´ 0 1 1 q = 31643 245506 29 225 ´ 0 1 1 2 = 245506 522655 225 479  

 

Заменяем пару (a, b) парой (b, r): a = 2; b = 1.

Вычисляем r – остаток от деления числа a на b: a = bq + r, 0 ≤ r < |b|.

2 = 1*2 + 0.

Т.к. r = 0, то второй столбец матрицы М7, а именно 522655

и есть решение заданного уравнения ▲






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.