Научная литература
booksshare.net -> Добавить материал -> Математика -> Коблиц Н. -> "Курс теории чисел и криптографии" -> 29

Курс теории чисел и криптографии - Коблиц Н.

Коблиц Н. Курс теории чисел и криптографии — Москва: Научное изд-во ТВП, 2001. — 254 c.
Скачать (прямая ссылка): theory-chisel-kriptographii.djvu
Предыдущая << 1 .. 23 24 25 26 27 28 < 29 > 30 31 32 33 34 35 .. 125 >> Следующая


Пример 2. Вернемся к примеру 1: покажем, как можно вычислить символ Лежандра, не разлагая 1872 на множители полностью, но лишь выделяя в нем максимальную степень 2. По квадратичному закону взаимности для символа Якоби имеем:

_ - (JLA (LL) - _ (ILH) - _ (LL]

~ V741i; ~ ~ \741iy 1.7411,/ -\117/-\Д17/'

это равняется - (^) (^) = (^) = (Ш) = (|) = -1.

Квадратные корни в кольце вычетов по модулю р. Используя квадратичный закон взаимности, можно быстро определить, является ли данное целое число а квадратичным вычетом или невычетом по модулю р. Однако если а — вычет, то этот факт не помогает решить сравнение х2 = a (mod р), — он лишь означает, что решение существует. В заключение этого параграфа мы приведем алгоритм, позволяющий для данного квадратичного вычета а найти его квадратный корень, если известен какой-либо невычет п.

Предположим, что р — нечетное простое число и предположим, что нам известен квадратичный невычет п по модулю р. Пусть а — такое целое число, что (-) = 1. Мы хотим найти такое целое число

2

х, что X = a (mod р). Для этого выполняем следующие действия. Во-первых, записываем р — 1 в виде 2°s (s нечетно). Вычисляем п" по модулю р и обозначаем его через Ь. Далее вычисляем а^"+1^2 по модулю р и обозначаем его через г. Покажем, что г в определенном смысле близко к квадратному корню из а. Точнее, покажем, что отно-шение г к а есть корень 2 -и степени из единицы по модулю р. Для краткости мы вместо сравнений по модулю р будем писать равенства

56

ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ

и через а обозначать обратный элемент к а по модулю р. Тогда

, -1 2x2а-1 32а-1 (р-1)/2 (а\ л

(а г ) = а = сг "=-)=1.

KpJ

Теперь нужно умножением г на некоторый корень 2°-й степени из 1 получить такой х, чтобы выполнялось равенство х /а = 1. Убедимся, прежде всего, что Ь есть примитивный корень 2°-й степени из единицы, т. е. что каждый корень 2°-й степени из единицы можно представить как степень Ь. Сначала заметим, что Ь есть корень 2а-к степени из единицы: Ь2 = пз2 = пр 1 = 1. Если бы корень Ь не был примитивным, то существовала бы некоторая меньшая его степень (делитель 2°), возведение в которую дало бы 1. Но тогда Ь был бы четной степенью примитивного корня 2°-й степени из 1, т.е. квадратом в Fp, что невозможно, так как b = п3, п — невычет, a s нечетно, и потому (jj) = (^У = -1. Таким образом, b — примитивный корень 2°-й степени из единицы. Остается найти подходящую степень Ь\ где 0 ^ j < 2°, так, чтобы х = b3r оказалось искомым квадратным корнем из а. Для этого представим j в двоичной записи j = jo + 2j\ + • ¦ ¦ + 2а Jc-2 и покажем, что можно последовательно определять, какие значения (0 или 1) принимают Jo,j\, ¦ ¦ ¦ (Заметим,

что всегда можно предполагать, что j < 2° \ так как b2 = — 1, и, следовательно, изменение J на 2 дает значение J , для которого bJ г является другим квадратным корнем из а.) Вот индуктивная процедура для нахождения двоичных цифр в разложении j.

1. Возводим г2/а в степень 2а 2. Как мы доказали, квадрат этого элемента есть 1. Следовательно, мы получаем ±1. Если мы получили 1, то полагаем Jq = 0, если мы получили —1, то полагаем Jq = 1. Заметим, что J0 тем самым выбрано так, что (bj0r)2/а является корнем 2° 2-й степени из единицы.

2. Пусть такие Jo,Ji,---,jk-i, что (Ь "' г) /а является корнем 2а к 1-я степени из 1, уже найдены, и мы хотим опреде-

а — к — 2

лить jk. Возводим полученный корень в степень 2 и выбираем

в зависимости от того, получается при этом +1 или —1:

ЄСЛИ {-O-J =(-1'

то берем Jk= соответственно. Легко проверить, что при таком выборе Jk «исправленное» значение оказывается ближе к квадратному

/, ?'o + 2i'i-|-----1-2*7* \2 / па-к-2 „ ,

корню из а, т. е. (о г) /а — корень 2 -и степени из 1.

§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ

57

Наконец, когда мы дойдем до к = а —2 и найдем ja-2, мы получим,

что

(bjo+2jl + -+2a~2ja-7r)2/a = 1,

т.е. b'1T — искомый квадратный корень из а, что и требовалось.

Пример 3. Используем предложенный алгоритм, чтобы найти квадратный корень из а = 186 по модулю р = 401.

4

Решение. Число п = 3 — невычет. Имеем р — 1 = 2 -25, поэтому 6 = З25 = 268 иг = а13 = 103 (вместо сравнений по модулю р пишем равенства). Вычислив а = 235, получим, что число г /а = 98 должно быть корнем степени 8 из единицы. Мы подсчитываем далее, что 984 = -1. Следовательно, jo = 1. Затем находим, что (6г) /а = —1. Так как квадрат этого числа равен 1, то = 0 и, наконец, j2 = 1. Итак, j' = 5 и искомый квадратный корень есть b5r = 304.

Замечания. 1. Наиболее простым этот алгоритм оказывается в случае, когда р = 3 (mod 4), р — простое. Тогда а — 1, s = (р — 1)/2 и (s + 1)/2 = (р + 1)/4. Легко проверить, что

(р+1)/4

X = г = а — искомый квадратный корень.

2. Оценим время работы этого алгоритма. Предположим, что невычет п известен с самого начала. Действия по нахождению s, Ь и г = a^s+1^2 (проводимые в кольце вычетов по модулю р) требуют не более O(log р) двоичных операций (см. предложение 1.3.6). Далее, при нахождении j наиболее трудоемкая часть А;-го шага индукции — возведение в степень 2° к 2 — требует а — к — 2 возведений в квадрат по модулю р чисел, меньших р. Так как а — к — 2 < а для каждого шага справедлива оценка O(alog р). Так как всего шагов а — 1, окон-
Предыдущая << 1 .. 23 24 25 26 27 28 < 29 > 30 31 32 33 34 35 .. 125 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed