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. В текстовом редакторе сделать отчет, содержащий текст программы и результаты ее работы.