Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
му к шифрам доп 1.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
584.19 Кб
Скачать

Метод гаммирования

Пусть есть какой-то алфавит, его символы закодированы числами. Каждое число предстваляется в виде группы из m бит, а m выбирается так, чтобы можно было закодировать все символы алфавита. Допустим, в алфавите 8 символов. Если m = 2, можем закодировать только 4 из них, а вот m = 3 - пойдёт.

Есть открытый текст. Каждый символ имеет какой-то номер в алфавите, поэтому может быть закодирован теми самыми битами. Например, алфавит: {А = 00, Б = 01, В = 10, Г = 11}, m = 2. Тогда БАГ => 01 00 11. Эти группы бит соединяем в одну цепочку. То есть был БАГ, а стало 010011.

На всякий случай стоит пояснить, что такое псевдослучайные числа. Это числа, последовательность которых получена по некоторому алгоритму, причём так, что со стороны её трудно отличить от случайной.

Что дальше? Полученная ранее цепочка разбивается на блоки по q бит, пусть всего получилось N блоков. Пусть есть ещё группа G из p целых разных псевдослучайных чисел, не меньших 0 и не больших 2^q - 1 (^ - значок степени). Нумерация блоков и псевдослучайных чисел ведётся с нуля, i-ый блок складываем с q-битным представлением (i mod p)-го числа группы G, получаем какую-то группу бит B(i). Все полученные таким способом группы бит (то есть B(i), i = 0,1,...,N-1) объединяем и далее по полученному набору бит выписываем символы шифрованного текста.

Сложение бит делается так: если оба бита одинаковые, в итоге 0, иначе 1 (известно как операция XOR). Например, 101 + 110 = 011.

Важно, чтобы параметр q был довольно большим числом - это повышает стойкость к атакам.

Теперь пример. Здесь просто покажем сложение блоков с псевдослучайной последовательностью, без пояснений по ГПСЧ. Возьмём русский алфавит без Ё, Тогда можно кодировать по 5 бит (A = 00000, Б = 00001, В = 00010...). Тогда БАГ = 000010000000011. Пусть q = 3, p = 2, G = десятичный вид:{4, 5} = двоичный вид: {100, 101} (для демонстрации пойдёт, хотя вообще это не особо случайный ряд, да и период маловат). БАГ = 000 010 000 000 011.

Блок

"Налагаемые" биты

Сложение

000

100

100

010

101

111

000

100

100

000

101

101

011

100

111

Посмотрите внимательно на среднюю колонку - "налагаемые" битовые наборы циклически повторяются: их меньше, чем блоков.

Наборы из правой колонки объядиняем. Поскольку символы алфавита кодируются 5 битами, группируем по 5 бит: ШИФР(БАГ) = 100111100101111 = {19, 25, 15}, то есть нам нужно найти в алфавите символы номер 19, 25, 15 (нумерация ведётся с нуля).

0-9

АБВГДЕЖЗИЙ

10-19

КЛМНОПРСТУ

20-29

ФХЦЧШЩЪЫЬЭ

30-31

ЮЯ

Итог - пресловутое УЩП. То есть БАГ изменился до неузнаваемости.

Описанный метод шифрования называется гаммированием. Последовательность бит, которая "преобразует" открытый текст, называется гаммой или гамма-последовательностью.