Консультация № 175574
23.12.2009, 23:01
0.00 руб.
0 5 1
Добрый вечер, уважаемые эксперты! Требуется решить две задачи на турбопаскале

Первая задача: Разработать криптографическую защиту информации с помощью алгоритма шифрования: шифр Уинстона, построить блок-схему алгоритма, написать программу дешифрования.

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

Заранее большое Вам спасибо! Ответ нужен до обеда 24.11.09, иначе будут большие проблемы...

Обсуждение

давно
Старший Модератор
31795
6196
24.12.2009, 11:52
общий
Цитата: 196606
шифр Уинстона

Как этот шифр называется по другому?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
24.12.2009, 13:32
общий
Зенченко Константин Николаевич:
Добрый день! Думаю, что речь идет о шифре Уитстона "двойной квадрат"
Неизвестный
26.12.2009, 14:57
общий
Лобанов Александр:
Добрый день! Вопрос еще актуален?
Неизвестный
29.12.2009, 14:08
общий
Лобанов Александр:
Добрый день! Выкладываю по частям, получится 5 программ(процедур) и, соответственно, 5 блок-схем. Ответ номер раз.
В Древней Греции (II в. до н. э.) был известен шифр, называемый квадрат Полибия. Это устройство представляло собой квадрат 5 х 5, столбцы и строки которого нумеровали цифрами от 1 до 5. В каждую клетку этого квадрата записывалась одна буква. (В греческом варианте од- на клетка оставалась пустой, в латинском – в одну клетку помещали две буквы i и j.) В результате каждой букве отвечала пара чисел и шифрован- ное сообщение превращалось в последовательность пар чисел. Пример 1. 13 34 22 24 44 34 15 42 22 34 43 45 32 Это сообщение записано при использовании латинского варианта квад- рата Полибия, в котором буквы расположены в алфавитном порядке. ("Cogito, ergo sum" – лат, "Я мыслю, следовательно существую").


Ю.А.Гатчин, А.Г.Коробейников. Основы криптографических алгоритмов. Учебное пособие. СПБ: ГИТМО (ТУ)
Код:

program p175574;
{ Шифрование с помощью полибианского квадрата }
var
ch: char;
abc: string;
s: string;
counter: integer;
row, col: integer;
posit: byte;
size: 2..10;
begin
abc := 'abcdefghijklmnopqrstuvwxyz';
size := 5;

write('s=');
readln(s);
for counter := 1 to length(s) do
begin
ch := s[counter];
if (ch in [abc[1]..abc[length(abc)]] ) then
begin
posit := ord(ch)-ord('a') + ord(ch<'j');
row := posit div size;
col := posit mod size;
if col=0 then
col := size
else
row := row+1;
write(row,col, '_');
end
else
write(ch);
end;
writeln;
readln;
end.
давно
Академик
320937
2216
31.12.2009, 13:37
общий
это ответ
Здравствуйте, Лобанов Александр.
Добрый день. Код программы в приложении (разработчик Зенченко Константин Николаевич).
Источник
Адрес блок-схемы175574.zip (19.7 кб)
Блок-схема подготовлена с помощью программы
BlsEditor Автор: Быстрицкий Владимир

В настоящее время в литературе есть и другие трактовки как шифра Полибия, так и шифра Уитстона.
Шифр Полибия
В Древней Греции (II в. до н. э.) был известен шифр, называемый квадрат Полибия. Это устройство представляло собой квадрат 5 х 5, столбцы и строки которого нумеровали цифрами от 1 до 5. В каждую клетку этого квадрата записывалась одна буква. (В греческом варианте од- на клетка оставалась пустой, в латинском – в одну клетку помещали две буквы i и j.) В результате каждой букве отвечала пара чисел и шифрован- ное сообщение превращалось в последовательность пар чисел. Пример 1. 13 34 22 24 44 34 15 42 22 34 43 45 32 Это сообщение записано при использовании латинского варианта квад- рата Полибия, в котором буквы расположены в алфавитном порядке. ("Cogito, ergo sum" – лат, "Я мыслю, следовательно существую").


Ю.А.Гатчин, А.Г.Коробейников. Основы криптографических алгоритмов. Учебное пособие. СПБ: ГИТМО (ТУ)
Википедия
Исходник на Pascal
Practical cryptography

Шифр Уитстона
Handbook of Applied Cryptography
by A.Menezes. Chapter 7, Example. 7.51, CRC Press, 1996


Приложение:
uses
crt;
const
tR:array[0..6,0..4]of char=
(
('ж','щ','н','ю','р'),
('и','т','ь','ц','б'),
('я','м','е','.','с'),
('в','ы','п','ч',' '),
(':','д','у','о','к'),
('з','э','ф','г','ш'),
('х','а',',','л','ъ')
);

tL:array[0..6,0..4]of char=
(
('и','ч','г','я','т'),
('.','ж','ь','м','о'),
('з','ю','р','в','щ'),
('ц',':','п','е','л'),
('ъ','а','н','.','х'),
('э','к','с','ш','д'),
('б','ф','у','ы',' ')
);

var
strMain,strCode,strDecode:string;
c,d:char;

procedure One(a:integer);
var
b,c:integer;
begin
{}
repeat
c:=-1;
repeat{}
inc(c);
b:=0;
while(tR[b,c]<>strCode[1])and(b<7)do{}
inc(b);
until (tR[b,c]=strCode[1])or(c>4);
delete(strCode,1,1);{}
b:=(b+a+7)mod 7;{}
strDecode:=strDecode+tR[b,c];
until length(strCode)=0;
end;
{}

procedure Two;
var
b,c,d,e:integer;
begin
{}
if odd(length(strCode))then strCode:=strCode+' ';
{}
repeat
c:=-1;
repeat{}
inc(c);
b:=0;
while(tL[b,c]<>strCode[1])and(b<7)do{}
inc(b);
until (tL[b,c]=strCode[1])or(c>4);
d:=-1;
repeat{}
inc(d);
e:=0;
while(tR[e,d]<>strCode[2])and(e<7)do{}
inc(e);
until (tR[e,d]=strCode[2])or(d>4);
delete(strCode,1,2);{}
strDecode:=strDecode+tL[e,c]+tR[b,d]
until length(strCode)=0;
end;

function index(a:char):integer;
begin
if a='1'then index:= 1
else index:=-1;
end;

begin
strMain:='контрольная строка для проверки шифрования и дешифрования информации цукенгшщзхъфывапролджэячсмитьбю.,:';
strDeCode:=strMain;
repeat
{}
strCode:=strDecode;
strDecode:='';
clrscr;
writeln('please select method',chr(13),chr(10),
'1-single square',chr(13),chr(10),
'2-double square',chr(13),chr(10),
'3-restory string',chr(13),chr(10),
'0-exit');

repeat
c:=ReadKey;
until c in ['0'..'3'];
{}
if c='3' then strDecode:=strMain;
{}
if c in ['1'..'2'] then
begin
{}
case c of
'1':write(chr(13),chr(10),chr(13),chr(10),'single square');
'2':write(chr(13),chr(10),chr(13),chr(10),'double square');
end;
writeln(chr(13),chr(10),chr(13),chr(10),'please select mode'
,chr(13),chr(10),'1-code'
,chr(13),chr(10),'2-decode');
repeat
d:=ReadKey;
until d in ['1'..'2'];
writeln('Original string:');
writeln(strCode);
case c of
'1':One(index(d));
'2':Two;
end;
writeln('Result:');
writeln(strDecode);
readkey;
end;
until c='0';
end.
Форма ответа