Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2012, 17:32   #1
for_tuna
Пользователь
 
Регистрация: 06.12.2009
Сообщений: 23
По умолчанию дешифровка метод Уинтстона

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

Помогите,пожалуйста реализовать процедуру дешифровки

вот код программы с расшифровкой




среда-PascalAbc.net

Код:
  uses crt;
type
  ttable=array[1..7,1..5] of char;
const
  list:ttable=(('а','б','в','г','д'),
               ('е','ж','з','и','к'),
               ('л','м','н','о','п'),
               ('р','с','т','у','ф'),
               ('х','ц','ч','ш','щ'),
               ('ъ','ы','ь','э','ю'),
               ('я','.',',',':',' '));
  mixdepth=1000;
 
procedure findxy(table:ttable;c:char;var x,y:byte);
var
  p,o:byte;
begin
  for o:=1 to 7 do
  for p:=1 to 5 do
  if table[o,p]=c then
  begin
    x:=p;
    y:=o;
    exit;
  end;
end;
 
var
  table1,table2:ttable;
  p,o,p2,o2:byte;
  i:integer;
  c:char;
  s,s2:string;
begin
  
  for o:=1 to 7 do
  for p:=1 to 5 do
  begin
    table1[o,p]:=list[o,p];
    table2[o,p]:=list[o,p];
  end;
  
  
  randomize;
  for i:=1 to mixdepth do
  begin
    
    o:=random(7)+1;
    p:=random(5)+1;
    o2:=random(7)+1;
    p2:=random(5)+1;
    c:=table1[o,p];
    table1[o,p]:=table1[o2,p2];
    table1[o2,p2]:=c;
    
    o:=random(7)+1;
    p:=random(5)+1;
    o2:=random(7)+1;
    p2:=random(5)+1;
    c:=table2[o,p];
    table2[o,p]:=table2[o2,p2];
    table2[o2,p2]:=c;
  end;
  
  clrscr;
  for o:=1 to 7 do
  begin
    for p:=1 to 5 do write(table1[o,p]:2);
    write('  | ');
    for p:=1 to 5 do write(table2[o,p]:2);
    writeln;
  end;
  writeln('Введите текст который будет зашифрован используя только символы из таблиц:');
  readln(s);
  if odd(length(s)) then s:=s+' '; 

  i:=1;
  s2:='';
  while i<length(s) do
  begin
    findxy(table1,s[i],p,o);
    findxy(table2,s[i+1],p2,o2);
    s2:=s2+table2[o,p2]+table1[o2,p];
    inc(i,2);
  end;
  
  writeln('Зашифрованная строка:');
  writeln(s2);
end.
for_tuna вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод подстановки, Дешифровка текстов, зашифрованных методами перестановки Айдар Помощь студентам 5 25.10.2015 21:00
СИ шифровка и дешифровка Габриэлла Помощь студентам 1 29.11.2011 22:35
Шифрование/дешифровка Jaroslav.zp.ua Общие вопросы по Java, Java SE, Kotlin 0 09.05.2011 12:31
Шифровка и Дешифровка Claster Помощь студентам 4 27.03.2011 12:30
Дешифровка zvyagin1 Фриланс 3 02.12.2008 20:40