Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Мастер-Эксперт

927

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

548

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

354

Россия, Санкт-Петербург


ID: 137394

Megaloman

Мастер-Эксперт

312

Беларусь, Гомель


ID: 400669

epimkin

Профессионал

275


ID: 400484

solowey

Профессор

73


ID: 401888

puporev

Профессор

53

Россия, Пермский край


8.1.6

02.01.2021

JS: 2.2.2
CSS: 4.2.0
jQuery: 3.5.1


 

Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)


Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 251
Gluck
Статус: 6-й класс
Рейтинг: 222
puporev
Статус: Профессор
Рейтинг: 53
 

Перейти к консультации №:
 

Консультация онлайн # 199696
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: JonMoxley (Посетитель)
Дата: 23.11.2020, 13:40
Поступило ответов: 1

Здравствуйте! У меня возникли сложности с таким вопросом:Помогите сделать расшифровку методом АФИННАЯ СИСТЕМА ПОДСТАНОВОК ЦЕЗАРЯ на паскале

код шифровки:

Код (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.

Последнее редактирование 24.11.2020, 12:33 Зенченко Константин Николаевич (Старший модератор)

Состояние: Консультация закрыта

Здравствуйте, JonMoxley!

Смотрите код:

Код (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.


Удачи!


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 24.11.2020, 16:36

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.