Консультация № 199696
23.11.2020, 13:40
0.00 руб.
24.11.2020, 12:33
0 1 1
Здравствуйте! У меня возникли сложности с таким вопросом:Помогите сделать расшифровку методом АФИННАЯ СИСТЕМА ПОДСТАНОВОК ЦЕЗАРЯ на паскале

код шифровки:
[code lang=pascal]const
m=26;
var
a,b,c:integer;
n:array[0..m-1]of integer;
s:string;
begin
a:=3;
b:=5;
for c:=0 to m-1 do n[c]:=(a*c+b)mod m;
writeln;
write('Enter string:=');
readln(s);
s:=UpperCase(s);
for c:=1 to length(s)do
if s[c] in ['A'..'Z']then s[c]:=chr(ord('A')+n[ord(s[c])-ord('A')]);
writeln('Code string:=',s);
end.[/code]

Обсуждение

давно
Старший Модератор
31795
6196
24.11.2020, 16:36
общий
это ответ
Здравствуйте, JonMoxley!

Смотрите код:
[code lang=pascal]const
m=26;
var
a,b,c:integer;
i:array[1..m-1]of integer;
n:array[0..m-1]of integer;
s,p,o:string;
begin
{coder}
a:=7;
b:=5;
for c:=0 to m-1 do n[c]:=(a*c+b)mod m;
s:='example of encryption and decryption by the affine Caesar permutation system';
write('Enter string:=',s);
{ readln(s);}
while pos(' ',s)>0 do delete(s,pos(' ',s),1);
s:=UpperCase(s);
o:=s;
for c:=1 to length(s)do
{ if s[c] in ['A'..'Z']then }s[c]:=chr(ord('A')+n[ord(s[c])-ord('A')]);
writeln('Code string:=',s);
readln;
{decoder}
for c:=1 to m-1 do i[c]:=0;
for c:=1 to m-1 do for b:=1 to m-1 do
if(b<>c)and((b*c mod m)=1)then i[c]:=b;
for a:=0 to m-1 do
begin
{ writeln('':15,s);}
for c:=1 to m-1 do if i[c]<>0 then
begin
p:=s;
write('Decode string:=');
for b:=0 to m-1 do n[b]:=i[c]*(m+b-a)mod m;
for b:=1 to length(p)do
{ if p[b] in ['A'..'Z']then }p[b]:=chr(ord('A')+n[ord(p[b])-ord('A')]);
{ if p=o then writeln(p,' bingo')else} writeln(p);
end;
readln;
end;
end.[/code]

Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа