Опубликован: 02.03.2017 | Доступ: свободный | Студентов: 2512 / 557 | Длительность: 21:50:00
Лекция 3:

Алгебраические системы

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

3.2 Индексы

Пусть G - группа, a - её элемент, b={a}^{k} \in {\langle}a{\rangle}. Число k называется дискретным логарифмом элемента b по основанию a (пишут k={\log }_{a}b). В случае, когда a - примитивный корень по модулю n, дискретный логарифм k ещё называют индексом числа b по модулю n при основании a. Пишут: k=ind_{a}b. Когда примитивный корень a фиксирован, можно также писать: k=ind\ b.

Дискретное логарифмирование в произвольной группе является трудноразрешимой задачей. Приведём один из примеров, когда оно всё-таки легко осуществимо.

Пример 3.7 Вычислить дискретный логарифм числа a=5434 по основанию 5 по модулю p = 102673.

Решение. Порядок мультипликативной группы поля вычетов по модулю 102673 равен 102672={2}^{4} \cdot {3}^{2} \cdot 23 \cdot 31. Число, являющееся произведением большого количества небольших чисел, называется гладким. Для дискретного логарифмирования в таком поле существует алгоритм Полига-Хэллмана, который мы сейчас применим.

Если x - решение нашей задачи, и x_1, x_2, x_3, x_4 - остатки от деления x на 16, 9, 23 и 31 соответственно, то


  \begin{center}
  \begin{tabular}{ll}
   ${\left({5}^{{M}_{1}}\right)}^{{x}_{1}}=\left({a}^{{M}_{1}}\right)~(\mod  p)$,&
   ${\left({5}^{{M}_{2}}\right)}^{{x}_{2}}=\left({a}^{{M}_{2}}\right)~(\mod  p)$, \\
   ${\left({5}^{{M}_{3}}\right)}^{{x}_{3}}=\left({a}^{{M}_{3}}\right)~(\mod  p)$, &
   ${\left({5}^{{M}_{4}}\right)}^{{x}_{4}}=\left({a}^{{M}_{4}}\right)~(\mod  p)$,\\
  \end{tabular}
  \end{center}

где

{M}_{1}=\frac{p-1}{16},{M}_{2}=\frac{p-1}{9},{M}_{3}=\frac{p-1}{23},{M}_{4}=\frac{p-1}{31}.

Наоборот, если мы найдём x_1, x_2, x_3 и x_4, а решение x задачи всегда существует (так как 5 - примитивный корень), то x будет совпадать с единственным решением x' системы:

\left\{\begin{array}{l}x'=x_1 ~(\mod  16), \\ x'=x_2 ~(\mod  9), \\ x'=x_3 ~(\mod  23),\\ x'=x_4 ~(\mod  31). \end{array}\right.

Итак, для решения задачи, по китайской теореме об остатках нужно найти:


  \begin{center}
  \begin{tabular}{ll}
   ${M}_{1}=6417,$& ${\widetilde{{M}}}_{1}={M}_{1}^{-1}=1~(\mod  16);$ \\
   ${M}_{2}=11408,$ & ${\widetilde{{M}}}_{2}={M}_{2}^{-1}=2~(\mod  9);$ \\
   ${M}_{3}=4464,$ & ${\widetilde{{M}}}_{3}={M}_{3}^{-1}=12~(\mod  23);$ \\
   ${M}_{4}=3312,$ & ${\widetilde{{M}}}_{4}={M}_{4}^{-1}=6~(\mod  31);$
  \end{tabular}
  \end{center}                                                                                                                                                                                                                                                                                                                                                                                  \end{center}
x={x}_{1} \cdot {M}_{1} \cdot {\widetilde{{M}}}_{1}+{x}_{2} \cdot {M}_{2} \cdot {\widetilde{{M}}}_{2}+{x}_{3} \cdot {M}_{3} \cdot {\widetilde{{M}}}_{3}+{x}_{4} \cdot {M}_{4} \cdot {\widetilde{{M}}}_{4}=\\6417{x}_{1}+22816{x}_{2}+53568{x}_{3}+19872{x}_{4}.

Следовательно, нам нужно найти x_1, x_2, x_3, x_4.

Имеем:


  \begin{center}
  \begin{tabular}{ll}
   ${97697}^{{x}_{1}}=55814~(\mod  p),$ & ${170}^{{x}_{2}}=29684~(\mod  p),$\\
   ${24920}^{{x}_{3}}=56216~(\mod  p),$ & ${64646}^{{x}_{4}}=18591~(\mod  p).$  
  \end{tabular}
  \end{center}

Поскольку порядок группы {\langle}{5}^{{M}_{3}}{\rangle} равен 23, а группы {\langle}{5}^{{M}_{4}}{\rangle} - всего 31, то при различных x_3, x_4 величины {24920}^{{x}_{3}} и {64646}^{{x}_{4}} пробегают, соответственно, по 23 и 31 различным значениям.

Тогда x_3 и x_4 можно найти полным перебором, проверив x_3=0,1,\ldots,22, x_3=0,1,\ldots,30. В нашем случае {x}_{3}=14, {x}_{4}=12. Числа {x}_{1} и {x}_{2} также можно искать полным перебором, но для них можно ещё уменьшить количество попыток. Будем искать

{x}_{1}={x}_{1,1}+2{x}_{1,2}+4{x}_{1,3}+8{x}_{1,4},

где {x}_{1,i} \in \left\{0,1\right\}.

Имеем:

{\left({97697}^{{x}_{1}}\right)}^{8}={\left({97697}^{8}~(\mod  p)\right)}^{{x}_{1.1}}={(-1)}^{{x}_{1,1}}={55814}^{8}=(-1)~(\mod  p).

То есть (-1)^{x_{1,1}} = -1. Отсюда {x}_{1,1}=1.

Далее,

{\left({97697}^{{x}_{1}}\right)}^{4}={97697}^{4+8{x}_{1,2}}=15467 \cdot {(-1)}^{{x}_{1,2}}={55814}^{4}=87206~(\mod  p).

Проверим оба варианта x_{1,2}=0,1:

15467 \cdot {(-1)}^{0} \neq 87206~(\mod  p),
15467 \cdot {(-1)}^{1} = 87206~(\mod  p).

Отсюда {x}_{1,2}=1.

Далее,

{\left({97697}^{{x}_{1}}\right)}^{2}={97697}^{2+4+8{x}_{1,3}}=101570 \cdot {\left(-1\right)}^{{x}_{1,3}}={55814}^{2}=1103~(\mod  p).

Опять, из двух вариантов выбираем верный: {x}_{1,3}=1.

Наконец,

{97697}^{1+2+4+8{x}_{1,4}}=46859 \cdot {\left(-1\right)}^{{x}_{1,4}}=55814~(\mod p),

откуда {x}_{1,4}=1. Проверяем:

{97697}^{15}=55814~(\mod p)\Rightarrow {x}_{1}=15.

Аналогично находим {x}_{2}={x}_{2,1}+3{x}_{2,2}=5.

По китайской теореме об остатках находим x=69359.

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

Приведем эти таблицы для примитивного корня 2 по модулю 37:

Индекс по числу
0 1 2 3
0 24 25 14
1 0 30 22 9
2 1 28 31 5
3 26 11 15 20
4 2 33 29 8
5 23 13 10 19
6 27 4 12 18
7 32 7 6
8 3 17 34
9 16 35 21
Число по индексу
0 1 2 3
0 1 25 33 11
1 2 13 29 22
2 4 26 21 7
3 8 15 5 14
4 16 30 10 28
5 32 23 20 19
6 27 9 3 1
7 17 18 6
8 34 36 12
9 31 35 24

Например, чтобы определить индекс по числу 13, нужно в первой таблице перейти к столбцу "1" и строке "3". Итак, {ind}_{2}13=11. Наоборот, для нахождения числа по его индексу 11 нужно во второй таблице перейти в столбец "1" строку "1". Имеем: {2}^{11}=13\mod37.

Пример 3.8 Решим с помощью таблицы индексов сравнение:

8x=-11\mod37.

Будем далее использовать примитивный корень 2 и построенные для него выше таблицы. Правую часть сравнения заменяем положительным вычетом:

8x=26\mod37.

"Индексируем" левую и правую части сравнения:

{ind}\ 8+{ind}\ x={ind}\ 26~(\mod 36).

Находим в первой таблице для простого числа 37 значение ind\ 8 и ind\ 26 и подставляем в сравнение. Получим:

3+ind\ x=12~(\mod 36),

Откуда

ind\ x=9~(\mod 36).

По второй таблице находим число, соответствующее индексу 9. Получим: x=31~(\mod 37).

Пример 3.9 С помощью индексов решить сравнение:

13{x}^{4}=22~(\mod 37).

Индексируем сравнение:

ind\ 13+4\cdot ind\ x=ind\ 22.

По первой таблице индексов находим: ind\ 13=11, ind\ 22=31. Отсюда: 11+4\cdot ind\ x=31~(\mod 36), или 4 ind\ x=20~(\mod 36). Последнему сравнению удовлетворяют ind\ x=5,14,23,32. Для каждого из них по второй таблице индексов найдем x=32,30,5,7.

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Евгений Шаров
Евгений Шаров

как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами?

Юлия Мышкина
Юлия Мышкина

Обучение с персональным тьютором осуществляется по Скайпу или посредством переписки?