Разработка программы шифрования и дешифрования текста методом DES
Курсовая работа, 19 Января 2012, автор: пользователь скрыл имя
Краткое описание
Цель курсовой работы:
Разработать программу реализующая шифрование и дешифрование текста методом DES
Задача курсовой работы:
1. Обеспечить шифрования текста
2. Разработать дешифрование шифрованного текста
3. Сохранять файл
4. Открывать файл и загружать его для последующей обработки
Содержание работы
Введение
1. Цель курсовой работы
2. Задача курсовой работы
3. Реализация
4. Метод DES
5. Блок схема
6. Листинг
7. Описание программы
Заключение
Список использованной литературы
Содержимое работы - 1 файл
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН.doc
— 114.50 Кб (Скачать файл)else if o = '0100' then b:= 4
else if o = '0101' then b:= 5
else if o = '0110' then b:= 6
else if o = '0111' then b:= 7
else if o = '1000' then b:= 8
else if o = '1001' then b:= 9
else if o = '1010' then b:= 10
else if o = '1011' then b:= 11
else if o = '1100' then b:= 12
else if o = '1101' then b:= 13
else if o = '1110' then b:= 14
else if o = '1111' then b:= 15;
end;
begin
for a:= 16 downto 1 do
begin
z:= Concat(r[32],r[1],r[2],r[3],r[
r[8],r[9],r[10],r[11],r[12],r[
r[16],r[17],r[18],r[19],r[20],
r[24],r[25],r[26],r[27],r[28],
_1:= k[a];
r:= z;
for j:= 1 to 48 do // xor
begin
v:= StrToInt(r[j]);
b:= StrToInt(_1[j]);
x:= v xor b;
_2:= Concat(_2, IntToStr(x));
end;
p:= Copy(_2, 1, 6); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s1[v, b];
p:= Copy(_2, 7, 12); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s2[v, b];
p:= Copy(_2, 13, 18); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s3[v, b];
p:= Copy(_2, 19, 24); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s4[v, b];
p:= Copy(_2, 25, 30); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s5[v, b];
p:= Copy(_2, 31, 36); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s6[v, b];
p:= Copy(_2, 37, 42); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s7[v, b];
p:= Copy(_2, 43, 48); u:= p[1] + p[6]; o:= Copy(p, 2, 5); s(v, b);
rez:= rez + s8[v, b];
// Р перестановка
_2:= rez;
rez:= Concat(_2[16], _2[7], _2[20], _2[21], _2[29], _2[12], _2[28], _2[17],
_2[1], _2[15], _2[23], _2[26], _2[5], _2[18], _2[31], _2[10],
_2[2], _2[8], _2[24], _2[14], _2[32], _2[27], _2[3], _2[9],
_2[19], _2[13], _2[30], _2[6], _2[22], _2[11], _2[4], _2[25]);
for w:= 1 to 32 do
begin
v:= StrToInt(r[w]);
b:= StrToInt(l[w]);
x:= v xor b;
_2:= Concat(_2, IntToStr(x));
end;
l:= r;
r:= _2;
end;
_2:= Concat(l, r);
rez:= Concat(
_2[40], _2[8], _2[48], _2[16], _2[56], _2[24], _2[64], _2[32],
_2[39], _2[7], _2[47], _2[15], _2[55], _2[23], _2[63], _2[31],
_2[38], _2[6], _2[46], _2[14], _2[54], _2[22], _2[62], _2[30],
_2[37], _2[5], _2[45], _2[13], _2[53], _2[21], _2[61], _2[29],
_2[36], _2[4], _2[44], _2[12], _2[52], _2[20], _2[60], _2[28],
_2[35], _2[3], _2[43], _2[11], _2[51], _2[19], _2[59], _2[27],
_2[34], _2[2], _2[42], _2[10], _2[50], _2[18], _2[58], _2[26],
_2[33], _2[1], _2[41], _2[9], _2[49], _2[17], _2[57], _2[25]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
output, put, key, c0, d0, k0: AnsiString;
e1: string[1];
e2: string[2];
begin
DecToBin(Form1.Memo1.Text, output);
BeginPerestanovka(output, put);
l:= Copy(put, 1, 32);
r:= Copy(put, 33, 64);
DecToBin(Form1.Memo3.Text, key);
PerestanovkaKeyB(key, key);
c0:= Copy(key, 1, 28);
d0:= Copy(key, 29, 56);
c[0]:= c0;
d[0]:= d0;
for w:= 1 to 2 do
begin
e1:= c[w-1];
c[w]:= Copy(c[w-1], 2, 28) + e1;
e1:= d[w-1];
d[w]:= Copy(d[w-1], 2, 28) + e1;
end;
for w:= 3 to 8 do
begin
e2:= c[w-1];
c[w]:= Copy(c[w-1], 3, 28) + e2;
e2:= d[w-1];
d[w]:= Copy(d[w-1], 3, 28) + e2;
end;
e1:= c[8];
c[9]:= Copy(c[8], 2, 28) + e1;
e1:= d[8];
d[w]:= Copy(d[8], 2, 28) + e1;
for w:= 10 to 15 do
begin
e2:= c[w-1];
c[w]:= Copy(c[w-1], 3, 28) + e2;
e2:= d[w-1];
d[w]:= Copy(d[w-1], 3, 28) + e2;
end;
e1:= c[15];
c[16]:= Copy(c[15], 2, 28) + e1;
e1:= d[15];
d[16]:= Copy(d[15], 2, 28) + e1;
pocledovatelnostiK;
FuncE;
Form1.Memo2.Text:= rez;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
output, put, key, c0, d0, k0: AnsiString;
e1: string[1];
e2: string[2];
begin
DecToBin(Form1.Memo2.Text, output);
BeginPerestanovka(output, put);
l:= Copy(put, 1, 32);
r:= Copy(put, 33, 64);
DecToBin(Form1.Memo3.Text, key);
PerestanovkaKeyB(key, key);
c0:= Copy(key, 1, 28);
d0:= Copy(key, 29, 56);
c[0]:= c0;
d[0]:= d0;
for w:= 1 to 2 do
begin
e1:= c[w-1];
c[w]:= Copy(c[w-1], 2, 28) + e1;
e1:= d[w-1];
d[w]:= Copy(d[w-1], 2, 28) + e1;
end;
for w:= 3 to 8 do
begin
e2:= c[w-1];
c[w]:= Copy(c[w-1], 3, 28) + e2;
e2:= d[w-1];
d[w]:= Copy(d[w-1], 3, 28) + e2;
end;
e1:= c[8];
c[9]:= Copy(c[8], 2, 28) + e1;
e1:= d[8];
d[w]:= Copy(d[8], 2, 28) + e1;
for w:= 10 to 15 do
begin
e2:= c[w-1];
c[w]:= Copy(c[w-1], 3, 28) + e2;
e2:= d[w-1];
d[w]:= Copy(d[w-1], 3, 28) + e2;
end;
e1:= c[15];
c[16]:= Copy(c[15], 2, 28) + e1;
e1:= d[15];
d[16]:= Copy(d[15], 2, 28) + e1;
pocledovatelnostiK;
FuncER;
Form1.Memo1.Text:= rez;
end;
end.