Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
криптология.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
120.44 Кб
Скачать
  1. Модульная арифметика, основные свойства.

Пусть m – некоторое натуральное число. Не все натуральные числа делятся на m. Возможными остатками от деления являются 1, 2, …, m1, 0 (последний при делении нацело). По модулю m каждое натуральное число воcпринимается как остаток от деления этого числа на m: 25mod 3=1, 9mod 7=2, 100mod 26=22, 100mod 32=4 и т.п. Два числа a и b называются сравнимыми по модулю m, если при делении на m они дают одинаковые остатки, т.е. если amod m=bmod m. В этом случае пишут ab (mod m) («a сравнимо с b по модулю m»). Так, например, 5≡11(mod 3), 25≡0(mod 5), 48≡6(mod 7).

На множестве чисел 1, 2, …, m1, 0 вводится сложение по модулю m: в качестве результата берется остаток от деления обычной суммы слагаемых на модуль m, т.е. a+mb=(a+b)mod m. Например, при сложении по модулю 2 получаем 0+20=1+21=0 и 0+21=1+20=1. Составим таблицу сложения по модулю 3:

+3

0

1

2

0

0

1

2

1

1

2

0

2

2

0

1

Как видим, 2+32 = (2+2) mod 3 = 4 mod 3 = 1.

При вычитании по модулю m для соответствующих чисел осуществляют обычное вычитание и, если в результате получится отрицательное число, к нему прибавляют m. Например, по модулю 5 имеем: 1 –5 4 = -3 mod 5 = 2.

Если некоторый алфавит имеет мощность m (т.е. в нем m букв), то сложение и вычитание по модулю m можно истолковывать как сложение и вычитание букв с соответствующими номерами. Так, при m=32 (русский алфавит) имеем: Й-Ц=10-3223=-13mod32=19=Т, Т+Т=19+3219=38mod32=6=Е и т.п.

При таком истолковании модульных операций сложения и вычитания, шифрование по Виженеру – это сложение блока открытого текста с ключом по модулю мощности алфавита.

В дальнейшем понадобится и умножение по модулю m: оно выполняется аналогично сложению – в качестве результата берется остаток от деления на m обычного произведения сомножителей. Например, для умножения по модулю 4 получаем следующую таблицу:

×4

0

1

2

3

0

0

0

0

0

1

0

1

2

3

2

0

2

0

2

3

0

3

2

1

2. Понятие простого числа, алгоритмы нахождения. Решето Эратосфена

Считаем простыми числами все целые числа, принадлежащие последовательности натуральных чисел, которые делятся нацело, без дробного остатка, только на самих себя и на 1. Причем, число 1 не относим к простым числам. Числа, которые делятся без остатка не только на самих себя и 1, но и на некоторые другие числа из последовательности натуральных чисел, считаем составными

Эратосфеново решето 

Греческий математик Эратосфен (275-194 гг. до н.э.) предложил интересный метод нахождения простых чисел в интервале [2; n]. Он написал на папирусе, натянутом на рамку, все числа от 2 до 10000 и прокалывал составные числа. Папирус стал, как решето, которое “просеивает” составные числа, а простые оставляет. Поэтому такой метод называется Эратосфеновым решетом. Рассмотрим подробнее этот метод. 

Пусть написаны числа от 2 до n:

2 3 4 5 6 7 8 9 10 11 12 . . .

Первое неперечеркнутое число в строке является простым. Таким образом, 2 – простое число. Начинаем “просеивание” с него, перечеркивая все числа, которые делятся на 2:

2 3 4 5 6 7 8 9 10 11 12 . . .

Далее берем следующее по порядку неперечеркнутое число и перечеркиваем все числа, кратные ему и т. д. Таким образом, мы перечеркнем все составные числа, а простые останутся неперечеркнутыми:

2 3 4 5 6 7 8 9 10 11 12 . . .

Все числа указанного интервала можно рассматривать как множество и в дальнейшем из этого множества будем исключать (отсеивать) все составные числа.

Нахождение простых чисел с помощью решета Эратосфена.

Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:

  1. Выписать подряд все целые числа от двух до n (2, 3, 4, …, n).

  2. Пусть переменная p изначально равна двум — первому простому числу.

  3. Считая от p шагами по p, зачеркнуть в списке все числа от 2p до n кратные p (то есть числа 2p, 3p, 4p, …)

  4. Найти первое незачеркнутое число, большее чем p, и присвоить значению переменной p это число.

  5. Повторять шаги 3 и 4 до тех пор, пока   не станет больше, чем n

Теперь все не зачеркнутые числа в списке — простые.

На практике, алгоритм можно несколько улучшить следующим образом. На шаге № 3, числа можно зачеркивать, начиная сразу с числа  , потому что все составные числа меньше его уже будут зачеркнуты к этому времени. И, соответственно, останавливать алгоритм можно, когда   станет больше, чем  .[1]

Можно показать, что сложность алгоритма составляет   операций в модели вычислений RAM, или   битовых операций,[2][3] при условии вычисления и зачеркивания каждого кратного числа за время  , например при использования массивов с прямым доступом.