Автор работы: Пользователь скрыл имя, 19 Января 2012 в 20:43, курсовая работа
Цель курсовой работы:
Разработать программу реализующая шифрование и дешифрование текста методом DES
Задача курсовой работы:
1. Обеспечить шифрования текста
2. Разработать дешифрование шифрованного текста
3. Сохранять файл
4. Открывать файл и загружать его для последующей обработки
Введение
1. Цель курсовой работы
2. Задача курсовой работы
3. Реализация
4. Метод DES
5. Блок схема
6. Листинг
7. Описание программы
Заключение
Список использованной литературы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Memo3: TMemo;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
c, d, k: array [0..16] of AnsiString;
r, l, rez, z: AnsiString;
w, desK, desR: byte;
implementation
{$R *.dfm}
procedure DecToBin(input: string; var output: ansistring); десятичное в двоичное
var
a, b: double;
ost, q, w: byte;
st: AnsiString;
str: string[8];
begin
str:= ' ';
for w:= 1 to 8 do
begin
q:= Ord(input[w]);
b:= q;
While b <> 1 do
begin
a:= q / 2;
b:= Int(a);
if a = b then
ost:= 0
else ost:= 1;
q:= Round(b);
st:= st + IntToStr(ost);
if b = 1 then st:= st + '1';
end;
ost:= 1;
for q:= Length(st) downto 1 do // переворот строки
begin
str[ost]:= st[q];
Inc(ost);
end;
case Length(st) of
1: Insert('0000000', str, 1); // добавление недостающих нолей
2: Insert('000000', str, 1);
3: Insert('00000', str, 1);
4: Insert('0000', str, 1);
5: Insert('000', str, 1);
6: Insert('00', str, 1);
7: Insert('0', str, 1);
end;
output:= output + str;// + ' ';
str:= ' ';
st:= '';
end;
end;
procedure BeginPerestanovka(input: ansistring; var output: ansistring);
begin
output:=
input[58] + input[50] + input[42] + input[34] + input[26] + input[18]
+ input[10] + input[2]
+ input[60] + input[52] + input[44] + input[36] + input[28] + input[20]
+ input[12] + input[4]
+ input[62] + input[54] + input[46] + input[38] + input[30] + input[22]
+ input[14] + input[6]
+ input[64] + input[56] + input[48] + input[40] + input[32] + input[24]
+ input[16] + input[8]
+ input[57] + input[49] + input[41] + input[33] + input[25] + input[17]
+ input[9] + input[1]
+ input[59] + input[51] + input[43] + input[35] + input[27] + input[19]
+ input[11] + input[3]
+ input[61] + input[53] + input[45] + input[37] + input[29] + input[21]
+ input[13] + input[5]
+ input[63] + input[55] + input[47] + input[39] + input[31] + input[23]
+ input[15] + input[7];
end;
procedure PerestanovkaKeyB(input: AnsiString; var output: AnsiString);
begin
output:= '';
output:=
input[57]+input[49]+input[41]+
+input[1]+input[58]+input[50]+
+input[10]+input[2]+input[59]+
+input[19]+input[11]+input[3]+
+input[63]+input[55]+input[47]
+input[7]+input[62]+input[54]+
+input[14]+input[6]+input[61]+
+input[21]+input[13]+input[5]+
end;
procedure pocledovatelnostiK;
var
w: byte;
bufer: AnsiString;
begin
for w:= 0 to 16 do
begin
bufer:= Concat(c[w], d[w]);
k[w]:=
Concat(bufer[14], bufer[17], bufer[11], bufer[24], bufer[1], bufer[5],
bufer[3], bufer[28], bufer[15], bufer[6], bufer[21], bufer[10],
bufer[23], bufer[19], bufer[12], bufer[4], bufer[26], bufer[8],
bufer[16], bufer[7], bufer[27], bufer[20], bufer[13], bufer[2],
bufer[41], bufer[52], bufer[31], bufer[37], bufer[47], bufer[55],
bufer[30], bufer[40], bufer[51], bufer[45], bufer[33], bufer[48],
bufer[44], bufer[49], bufer[39], bufer[56], bufer[34], bufer[53],
bufer[46], bufer[42], bufer[50], bufer[36], bufer[29], bufer[32]);
end;
end;
procedure FuncE;
const
s1 : array[0..3, 0..15] of string[4] =
(('1110','0100','1101','0001',
('0000','1111','0111','0100','
('0100','0001','1110','1000','
('1111','1100','1000','0010','
s2 : array[0..3, 0..15] of string[4] =
(('1111','0001','1000','1110',
('0011','1101','0100','0111','
('0000','1110','0111','1011','
('1101','1000','1010','0001','
s3 : array [0..3, 0..15] of string[4] =
(('1010','0000','1001','1110',
('1101','0111','0000','1001','
('1101','0110','0100','1001','
('0001','1010','1101','0000','
s4 : array [0..3, 0..15] of string[4] =
(('0111','1101','1110','0011',
('1101','1000','1011','0101','
('1010','0110','1001','0000','
('0011','1111','0000','0110','
s5 : array [0..3, 0..15] of string[4] =
(('0010','1100','0100','0001',
('1110','1011','0010','1100','
('0100','0010','0001','1011','
('1011','1000','1100','0111','
s6 : array [0..3, 0..15] of string[4] =
(('1100','0001','1010','1111',
('1010','1111','0100','0010','
('1001','1110','1111','0101','
('0100','0011','0010','1100','
s7 : array [0..3, 0..15] of string[4] =
(('0100','1011','0010','1110',
('1101','0000','1011','0111','
('0001','0100','1011','1101','
('0110','1011','1101','1000','
s8 : array [0..3, 0..15] of string[4] =
(('1101','0010','1000','0100',
Информация о работе Разработка программы шифрования и дешифрования текста методом DES