Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Бинарные отношения 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, v ∈ Z. В частности, целые числа n, m взаимно просты тогда и только тогда, когда nu + mv = 1 при некоторых u, v ∈ Z. Для доказательства этого утверждения нужно взять любой положительный элемент из множества 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 ... r n -3 = r n -2 q n -1 + r n -1 0 ≤ rn-1 < rn-2 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 Таким образом, (525, 231) = 21. Линейное представление наибольшего общего делителя: 21 = 63 - 42 · 1 = 63 - (231 - 63 · 3) · 1 = и 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.
Их вычисление удобно оформлять в виде таблицы:
Значения 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;
Вычисляем промежуточные результаты и записываем их в виде таблицы:
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) также опирается на алгоритм Евклида. Последовательность действий такова.
0 1 2. Вычисляем r – остаток от деления числа a на b, a = b*q +r, 0 ≤ r < b. 3. Если r = 0, то второй столбец матрицы E дает вектор x, y решений уравнения.
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
Заменяем пару (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
Заменяем пару (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
Заменяем пару (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
Заменяем пару (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
Заменяем пару (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
Заменяем пару (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
Заменяем пару (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 и есть решение заданного уравнения ▲
|