Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
68
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

М24. Нахождение чисел, "предположительно" являющихся простыми

С помощью "решета Эратосфена" можно найти все простые числа, меньшие заданного числа N. Это - стандартный метод, если необходимо найти именно список всех простых чисел. Если же, однако, нам нужно только проверить, является ли конкретное число простым, то составлять список всех простых чисел вовсе не обязательно. К тому же, если число очень велико, то это потребует солидных затрат времени. К сожалению, в общем случае не существует никакого достаточно быстрого метода проверки простоты заданного большого числа N. Если N достаточно велико, чтобы рассматривать его в качестве кандидата для использования в методе RSA (например, порядка 1050), то для точного доказательства его простоты потребуется непомерно большое время. В свете этого факта в 1976 г. Рабин (см. [12.8]), а в 1977 г. - в несколько другой форме - Соловей и Штрассен (см. [12.9]) предложили иной подход. В его основе заложена идея проверки некоторого условия относительно какого-либо числа, меньшего N. Это условие должно

  1. никогда не выполняться, если N является простым;

  2. выполняться чаще, чем не выполняться, если N не является простым.

Условие, предложенное Рабином, для составных N выполняется более чем в 75% случаев. Возьмем много чисел, меньших N (к примеру, m штук), и для каждого из этих m чисел проверим это условие. Если оно ни разу не выполнилось, то вероятность простоты числа N оценивается величиной (0.25)m. Взяв m достаточно большим, эту вероятность можно сделать сколь угодно близкой к единице.

Описание условия Рабина можно найти в работе [1.2], в главе 9. Список научных работ по смежной тематике см. в [13.12].

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

Этот алгоритм используется для отыскания наибольшего общего делителя (н.о.д.) двух целых чисел, x1 и x2. Если обозначить н.о.д. через h, то этот алгоритм можно также использовать для нахождения таких целых чисел m и n, что

m x1 - n x2=h,

которые используются в системе зашифрования/расшифрования RSA.

Алгоритм Евклида формулируется следующим образом.

Можем предположить, что оба числа x1 и x2 положительны, и что x1 больше x2 (если это не так, поменяем их местами).

Разделим x1 на x2; пусть в остатке получается число x3:

x1 = a1x2+x3, где a1 - целое число, а 0 x3< x2.

Если x30, то разделим x2 на x3; пусть в остатке получается x4:

x2 = a2x3+x4, где a2 - целое число, а 0 x4< x3.

Продолжаем таким образом до тех пор, пока в остатке не получится ноль, то есть, пока мы не получим

x(n-1) = a(n-1)xn.

Тогда наибольший общий делитель чисел x1 и x2 (h) будет равен xn. Если h=1, то целые числа x1 и x2 называются взаимно-простыми.

Пример

Найти н.о.д. чисел 1001 и 221.

Решение

1001=4221+117,

221=1117+104,

117=1104+13,

104=813+0.

Таким образом, н.о.д. чисел 1001 и 221 равен 13. (Проверка: 1001=1391, 221=1317; числа 91 и 17 взаимно-простые.)

В математической литературе принято обозначать н.о.д. пары целых чисел m и n через (m,n). Так, (1001,221)=13, а (91,17)=1.

Следующий пример иллюстрирует использование алгоритма Евклида в рамках метода RSA, как описано в главе 13.

Пример

Найти целые числа m и n, такие что 91m-17n=1.

Решение

Имеем:

91=517+6,

17=26+5,

6=15+1,

5=51,

что подтверждает взаимную простоту чисел 91 и 17 (если это было бы не так, то у нашего уравнения не существовало бы решения). Возвращаемся по шагам алгоритма в обратном порядке, начиная с предпоследней строки:

1=6-15 и 5=17-26,

поэтому

1=6-1(17-26)=36-17,

но

6=91-517,

следовательно,

1=3(91-517)-17=391-1617.

Итак,

m=3 и n=16.

(Проверка: 391=273 и 1617=272.)

Альтернативный метод

Значения m и n можно также найти с помощью непрерывных дробей (см. [6.7]). При этом метод отыскания остается тем же самым, что и в алгоритме Евклида, хотя все это и выглядит по-другому.

В качестве иллюстрации метода снова вычислим значения m и n, такие что

91m-17n=1.

,

,

.

Таким образом, для данной непрерывной дроби частичные отношения будут равны (5, 2, 1, 5), а последовательные приближения, соответственно

, , и .

Числа m и n совпадают с числителем и знаменателем предпоследнего приближения: они, как и ранее, оказываются равны 16 и 3.