Задача на шифрование и расшифровку текста - Pascal ABC
Формулировка задачи:
Задача. Открытый текст: "ШИФРОВАНИЕ_ПЕРЕСТАНОВКОЙ".
Ключ (правило перестановки): группы из 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.
Решение задачи: «Задача на шифрование и расшифровку текста»
textual
Листинг программы
- const n=30;
- var a,b:array[1..n] of integer;
- s,s1,s2,r:string;
- i, j, p, key:byte;
- m:set of byte;
- begin
- writeln('Введите текст для шифрования: ');
- readln(s);
- writeln('-------------------------------------------------');
- write('Введите количество цифр в ключе от 2 до ',n,' key= ');
- readln(key);
- while length(s) mod key<>0 do s:=s+' ';
- writeln('Введите ключ из ',key,' цифр: ');
- m:=[];
- for i:=1 to key do
- begin
- repeat
- readln(p);
- until(p in [1..key])and not(p in m);
- a[i]:=p;
- m:=m+[p];
- end;
- r:='';
- i:=1;
- while i<=length(s)-key+1 do
- begin
- s1:=copy(s,i,key);
- s2:='';
- for j:=1 to key do
- s2:=s2+s1[a[j]];
- r:=r+s2;
- i:=i+key;
- end;
- for i:=length(r) downto 1 do
- if r[i]=' ' then delete(r,i,1);
- writeln('--------------------------------------------------');
- writeln('Зашифрованный текст: ');
- writeln(r);
- //создадим ключ для дешифровки
- for i:=1 to key do
- begin
- for j:=1 to key do
- if a[j]=i then b[i]:=j
- end;
- s:=r;
- while length(s) mod key<>0 do s:=s+' ';
- r:='';
- i:=1;
- while i<=length(s)-key+1 do
- begin
- s1:=copy(s,i,key);
- s2:='';
- for j:=1 to key do
- s2:=s2+s1[b[j]];
- r:=r+s2;
- i:=i+key;
- end;
- for i:=length(r) downto 1 do
- if r[i]=' ' then delete(r,i,1);
- writeln('Расшифрованный текст');
- writeln(r);
- End.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д