Задача на шифрование и расшифровку текста - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Задача. Открытый текст: "ШИФРОВАНИЕ_ПЕРЕСТАНОВКОЙ". Ключ (правило перестановки): группы из 8 букв с порядковыми номерами 1, 2, ..., 8 переставить в порядок 3-8-1-5-2-7-6-4. Шифртекст: "ФНШОИАВР_СИЕЕЕРПННТВАОКО". Шифрование: (Но выдает ошибку )
Помогите составить программу для расшифровки

Решение задачи: «Задача на шифрование и расшифровку текста»

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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы