Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
DinAkirova
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 5
1

Шифр Плейфера

20.04.2017, 20:23. Просмотров 179. Ответов 0

Необходимо написать программу, которая будет шифровать и дешифровать методом Плейфера.
Пыталась разобраться на основе этого кода. но что-то прям никак, я 0 в программировании, а задачу нужно срочно сдать((
Помогите пожалуйста!!!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Procedure pleifer;
var l,i,j,m,n,i1,i2,j1,j2,k,t,i3,j3,i4,j4:integer;
a:array[1..10,1..10] of char;
s,s1:string;  c1,c2,pr:char;
begin
n:=strtoint(MethodForm.StrokaEdit.Text);
m:=strtoint(MethodForm.StolbikEdit.Text);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=(PleiferMatrixForm.PleiferStringGrid.Cells[i-1,j-1])[1];
s:=CodeForm.TopMemo.Text;
l:=length(s);
if l mod 2=0 then else Application.MessageBox(‘Неверные данные’,’четное количество букв’,0);
k:=1;   s1:=’’;
while k<l do begin
             c1:=s[k]; c2:=s[k+1];
             for i:=1 to n do begin
             for j:=1 to m do begin
                              if c1=a[i,j]  then begin
                                                 i1:=i;
                                                 j1:=j;
                                                 end;
                              if c2=a[i,j]  then begin
                                                 i2:=i;
                                                 j2:=j;
                                                 end;
                              end;
                              end;
             if i1=i2 then begin
                           pr:=a[i1,m];
                           for t:=m downto 2 do
                           a[i1,t]:=a[i1,t-1];
                           a[i1,1]:=pr;
                           s1:=s1+a[i1,j1]+a[i2,j2];
                           pr:=a[i1,1];
                           for t:=1 to m-1 do
                           a[i1,t]:=a[i1,t+1];
                           a[i1,m]:=pr;                        
                           end else
             if j1=j2 then begin
                           pr:=a[n,j1];
                           for t:=n downto 2 do
                           a[t,j1]:=a[t-1,j1];
                           a[1,j1]:=pr;
                           s1:=s1+a[i1,j1]+a[i2,j2];
                           pr:=a[1,j1];
                           for t:=1 to n-1 do
                           a[t,j1]:=a[t+1,j1];
                           a[n,j1]:=pr; 
                           end else begin
                                    i3:=i2;
                                    j3:=j1;
                                    i4:=i1;
                                    j4:=j2;
                                    s1:=s1+a[i4,j4]+a[i3,j3];
                                    end;
             
             inc(k,2);
             end;
CodeForm.LowMemo.Text:=s1;
end;
{Процедура декодировки методом Плейфера}
Procedure pleiferd;
var l,i,j,m,n,i1,i2,j1,j2,k,t,i3,j3,i4,j4:integer;
a:array[1..10,1..10] of char;
s,s1:string;  c1,c2,pr:char;
begin
n:=strtoint(MethodForm.StrokaEdit.Text);
m:=strtoint(MethodForm.StolbikEdit.Text);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=(PleiferMatrixForm.PleiferStringGrid.Cells[i-1,j-1])[1];
s:=DecodeForm.UpMemo.Text;
l:=length(s);
if l mod 2=0 then else Application.MessageBox(‘Неверные данные’,’четное количество букв’);
k:=1;   s1:=’’;
while k<l do begin
             c1:=s[k]; c2:=s[k+1];
             for i:=1 to n do begin
             for j:=1 to m do begin
                              if c1=a[i,j]  then begin
                                                 i1:=i;
                                                 j1:=j;
                                                 end;
                              if c2=a[i,j]  then begin
                                                 i2:=i;
                                                 j2:=j;
                                                 end;
                              end;
                              end;
             if i1=i2 then begin
                           pr:=a[i1,1];
                           for t:=1 to m-1 do
                           a[i1,t]:=a[i1,t+1];
                           a[i1,m]:=pr;
                           s1:=s1+a[i1,j1]+a[i2,j2];
                           pr:=a[i1,m];
                           for t:=m downto 2 do
                           a[i1,t]:=a[i1,t-1];
                           a[i1,1]:=pr;
                           end else
             if j1=j2 then begin
                           pr:=a[1,j1];
                           for t:=1 to n-1 do
                           a[t,j1]:=a[t+1,j1];
                           a[n,j1]:=pr;
                           s1:=s1+a[i1,j1]+a[i2,j2];
                           pr:=a[n,j1];
                           for t:=n downto 2 do
                           a[t,j1]:=a[t-1,j1];
                           a[1,j1]:=pr;
                           end else begin
                                    i3:=i2;
                                    j3:=j1;
                                    i4:=i1;
                                    j4:=j2;
                                    s1:=s1+a[i4,j4]+a[i3,j3];
                                    end;
             inc(k,2);
             end;
DecodeForm.DownMemo.Text:=s1;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2017, 20:23
Ответы с готовыми решениями:

Шифр Плейфера
Помогите пожалуйста реализовать алгоритм шифрования и расшифрования шифра...

Шифрование/дешифрование текстов по принципу шифра Плейфера
Помогите, пожалуйста, написать программу для шифрования/дешифрования текстов по...

Шифр Цезаря
Доброго времени суток! Помогите, пожалуйста, написать программу....

Шифр текста
Придумайте шифровку текста) записать условие задачи, программу и пример)...

Шифр Цезаря
Месяц программирую на Pascal ABC недавно решил сделать программу по шифру...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2017, 20:23

Шифр Цезаря
Ребят помогите написать программу,которая будет шифровать и дешифровать методом...

Шифр атбаш
Помогите сделать программу,чтобы было шифрование методом атбаш. Алфавит можно...

Шифр Цезаря
Напишите программу Шифр цезаря учитывая Ё и пробел


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru