Задача на шифрование и расшифровку текста - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д