1 АЛГОРИТМ ШИФРОВАНИЯ ПОДСТАНОВКОЙ
СТЕПЕНИ N
1.1 Теоретические сведения
Шифр, преобразования из которого изменяют только порядок следования символов исходного текста, но не изменяют их самих, называется шифром перестановки (ШП).
Суть методов перестановки состоит в том, что входной поток исходного текста делится на блоки, в каждом из которых выполняется перестановка символов.
Рассмотрим преобразование из ШП, предназначенное для зашифровки сообщения длиной n символов. Его можно представить с помощью таблицы

где i1 - номер шифртекста, на которое попадает первая буква исходного сообщения при выбранном преобразовании, i2 - номер места для второй буквы и т. д. В верхней строке таблицы выписаны по порядку числа от 1 до n, а в нижней - те же числа, но в произвольном порядке. Такая таблица называется подстановкой степени n.
Зная подстановку, задающую преобразование, можно осуществить как зашифрование, так и расшифрование текста. Например, если для преобразования используется подстановка
1 | 2 | 3 | 4 | 5 | 6 |
5 | 4 | 3 | 1 | 2 | 6 |
и в соответствии с ней зашифровывается слово ПРИМЕР, то получится МЕИРПР.
Следующий фрагмент программного кода (на языке Object Pascal) демонстрирует использование шифра перестановки для шифрования исходного сообщения и его расшифровки:
…………………………………………….
const Lmax=100;
…………………………………………….
type TArr=array[1..Lmax] of integer;
…………………………………………….
{процедура-функция шифрования текста
входные параметры: txt - исходный текст, password - ключ
результат функции - строка зашифрованного текста}
function SH_TO(txt:string;password:TArr):string;
var i, l:integer;
shifr:array[1..Lmax] of char;
s:string;
begin
l:=length(txt);
for i:=1 to l do
shifr[password[i]]:=txt[i];
for i:=1 to l do
s:=s+shifr[i];
result:=s;
end;
…………………………………………….
{процедура-функция расшифровки текста
входные параметры: txt - зашифрованный текст, password - ключ
результат функции - строка расшифрованного текста}
function SH_FROM(txt:string;password:TArr):string;
var i, l:integer;
s:string;
begin
l:=length(txt);
for i:=1 to l do
s:=s+txt[Password[i]];
result:=s;
end;
…………………………………………….
1.2 Задание для выполнения лабораторной работы
Реализовать программно (С#) алгоритм шифрования подстановкой степени n. В текстовом редакторе сделать отчет, содержащий текст программы и результаты ее работы.


