Шифры замены Программирование алгоритмов
Шифр замены – преобразования заключаются в замене каждого символа (слова) открытого сообщения на другие символы – шифрообозначения, порядок следования шифрообозначений совпадает с порядком следования соответствующих им символов в открытом тексте.
Шифр Цезаря (замена со сдвигом) Каждый символ открытого текста заменяется символом, находящимся тремя символами правее в алфавите Таблица для сдвига, равного 3. АБВГДЕЖЗИЙКЛМНОП ГДЕЖЗИЙКЛМНОПРСТ РСТУФХЦЧШЩЪЫЬЭЮЯ УФХЦЧШЩЪЫЬЭЮЯАБВ
Букву заменяют на ее естественный номер в алфавите Этот шифр может быть описан уравнением C=(M+K) mod N, где М - номер буквы исходного текста в алфавите, С - номер буквы зашифрованного текста в алфавите, K – ключ (число, на которое делаем смещение), N – количество букв в алфавите, mod – операция вычисления остатка от деления. Шифр Цезаря (замена со сдвигом)
Программный код для алгоритма Цезаря program cezar; var n,i,r:integer; s:string; begin writeln('vvedite stroku'); readln(s); writeln('vvedite regim: 1-shifrovanie, 2-rasshifrovanie'); readln(r); if r=1 then begin i:=1; while i
Шифр Виженера предполагает выбор ключа, который рассматривают как блоковую последовательность букв, а сообщение разбивают на блоки длиной, соответствующей длине ключа. Затем выполняют операцию сложения по модулю номеров каждой буквы исходного текста с номером соответствующей буквы ключа в блоке и по полученному номеру записывают букву в зашифрованный текст.
Для примера используем слово ФАЙЛ, состоящее из 4 букв, как ключ. Алфавитным номерам букв соответствует блок чисел 21, 1, 10, 12. Чтобы зашифровать сообщение при помощи этого ключа, исходный текст разбивается на блоки длинной в 4 буквы каждый. Затем к каждому числовому представлению первой буквы блока надо прибавить 21, к числовому представлению второй буквы – 1, третьей – 10, четвертой – 12. Получающиеся суммы по модулю представляют числовые значения шифртекста. Шифр Виженера
Шифр сложной замены -это модификация шифра Цезаря с числовым ключом. Под буквами сообщения записывают цифры числового ключа. Если ключ короче сообщения, то его запись циклически повторяют. Шифртекст получают, отсчитывая букву по алфавиту на соответствующую цифру ключа.
Полибианский квадрат Квадрат или прямоугольник заполняется буквами случайным образом. При шифровании находят букву текста и заменяют ее буквой, стоящей в строке ниже ( или первой буквой в столбце).
Пусть дан квадрат - ключ для шифра «Полибианский квадрат». Зашифровать слово «криптография» полученным ключом. Найдем в прямоугольнике первую букву слова. Выберем букву, которая стоит ниже этой буквы, и запишем ее в качестве первого символа криптограммы. Выполним аналогичные действия для всех оставшихся букв слова. Получим «азбжхвизтъбс» УХЭНЖЧЕС ЛКЦГОРДЩ ФАЬИВЗЮЙ ЪТМБПЫШЯ
Программный код для алгоритма Виженера program vigener; var n,i,r:integer; s,s1,s2:string; begin writeln('vvedite stroku'); readln(s); writeln('vvedite kluch'); кeadln(s1); writeln('vvedite regim: 1-shifrovanie, 2-rasshifrovanie'); readln(r); s2:=''; for i:=1 to length(s) div length(s1)+1 do {размножаем ключ до длины текста} s2:=s2+s1; if r=1 then begin i:=1; while iord('z') then n:=ord('a')+(n-ord('z'))mod 26-1; s[i]:=chr(n); end; end else for i:=1 to length(s) do begin n:=ord(s[i])-(ord(s2[i])-ord('a'))-1; if n
Программный код для алгоритма Полибианский квадрат program polib_kvadrat; var n,i,r,j,k:integer; s,s1:string; a:array[1..5,1..5] of char; begin writeln ('vvedite rasmer kvadrata');}readln(n); writeln ('vvedite bukvi alfavita v kvadrad rasmera',' ',n); for k:=1 to n do begin for j:=1 to n do read(a[k,j]); readln; end; writeln('vvedite stroku'); readln(s); writeln('vvedite regim: 1-shifrovanie, 2-rasshifrovanie'); readln(r); s1:=''; {формируемая новая строка} if r=1 then begin i:=1; while i