Задача. Открытый текст: "ШИФРОВАНИЕ_ПЕРЕСТАНОВКОЙ".
Ключ (правило перестановки): группы из 8 букв с порядковыми номерами
1, 2, ..., 8 переставить в порядок 3-8-1-5-2-7-6-4.
Шифртекст: "ФНШОИАВР_СИЕЕЕРПННТВАОКО".
Program shifr;
const n=30;
var
a:array[1..n] of integer;
len:integer;
s, r:string;
i, j, v:integer;
p, key:integer;
Begin
write('Введите текст для шифрования: ');
read(s);
writeln('-------------------------------------------------');
write('Введите количество цифр в ключе: ');
readln(key);
len:= length(s);
while len mod key<>0 do
begin
s:=s+' ';
inc(len)
end;
writeln('Введите ключ из ',key,' цифр: ');
repeat
v:=0;
for i:=1 to key do
begin
read(p);
a[i]:=p
end;
for i:=1 to key-1 do
for j:=i+1 to key do
if a[i]=a[j] then inc(v);
if v<>0 then
begin
writeln ('Ошибка! Символы ключа не уникальны!');
write('Введите ключ из ',key,' цифр: ');
end
until v=0;
while v<>len do
begin
for i:=1 to key do
r[i+v]:=s[a[i]+v];
v:=v+key
end;
writeln('--------------------------------------------------');
write('Зашифрованный текст: ');
for i:=1 to len do
write(r[i]);
writeln;
End.