Лидеры рейтинга
Мастер-Эксперт
927
Мастер-Эксперт
548
Академик
354
Мастер-Эксперт
312
Профессионал
275
Профессор
73
Профессор
53
8.1.6
02.01.2021
JS: 2.2.2
CSS: 4.2.0
jQuery: 3.5.1
Создание программ на языках Pascal, Delphi и Lazarus.
Администратор раздела: Зенченко Константин Николаевич (Старший модератор)
|
Перейти к консультации №: |
|
Здравствуйте! У меня возникли сложности с таким вопросом:Помогите сделать расшифровку методом АФИННАЯ СИСТЕМА ПОДСТАНОВОК ЦЕЗАРЯ на паскале
код шифровки:
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.
Состояние: Консультация закрыта
Здравствуйте, JonMoxley!
Смотрите код:
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.
|
Консультировал: Зенченко Константин Николаевич (Старший модератор) Дата отправки: 24.11.2020, 16:36 |
Рейтинг ответа:
0 Сообщение модераторам Отправлять сообщения |
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.