Разработка программы шифрования и дешифрования текста методом DES

Автор работы: Пользователь скрыл имя, 19 Января 2012 в 20:43, курсовая работа

Краткое описание

Цель курсовой работы:

Разработать программу реализующая шифрование и дешифрование текста методом DES
Задача курсовой работы:
1. Обеспечить шифрования текста
2. Разработать дешифрование шифрованного текста
3. Сохранять файл
4. Открывать файл и загружать его для последующей обработки

Содержание работы

Введение
1. Цель курсовой работы
2. Задача курсовой работы
3. Реализация
4. Метод DES
5. Блок схема
6. Листинг
7. Описание программы
Заключение
Список использованной литературы

Содержимое работы - 1 файл

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН.doc

— 114.50 Кб (Скачать файл)

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[33]+input[25]+input[17]+input[9]

   +input[1]+input[58]+input[50]+input[42]+input[34]+input[26]+input[18]

   +input[10]+input[2]+input[59]+input[51]+input[43]+input[35]+input[27]

   +input[19]+input[11]+input[3]+input[60]+input[52]+input[44]+input[36]

   +input[63]+input[55]+input[47]+input[39]+input[31]+input[23]+input[15]

   +input[7]+input[62]+input[54]+input[46]+input[38]+input[30]+input[22]

   +input[14]+input[6]+input[61]+input[53]+input[45]+input[37]+input[29]

   +input[21]+input[13]+input[5]+input[28]+input[20]+input[12]+input[4];

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','0010','1111','1011','1000','0011','1010','0110','1100','0101','1001','0000','0111'),

  ('0000','1111','0111','0100','1110','0010','1101','0001','1010','0110','1100','1011','1001','0101','0011','1000'),

  ('0100','0001','1110','1000','1001','0110','0010','1011','1111','1100','1001','0111','0011','1010','0101','0000'),

  ('1111','1100','1000','0010','0100','1001','0001','0111','0101','1011','0011','1110','1010','0000','1001','1101'));

  s2 : array[0..3, 0..15] of string[4] =

  (('1111','0001','1000','1110','0110','1011','0011','0100','1001','0111','0010','1101','1100','0000','0101','1010'),

  ('0011','1101','0100','0111','1111','0010','1000','1110','1100','0000','0001','1010','0110','1001','1011','0101'),

  ('0000','1110','0111','1011','1010','0100','1101','0001','0101','1000','1100','0110','1001','0011','0010','1111'),

  ('1101','1000','1010','0001','0011','1111','0100','0010','1011','0110','0111','1100','0000','0101','1110','1001'));

  s3 : array [0..3, 0..15] of string[4] =

  (('1010','0000','1001','1110','0110','0011','1111','0101','0001','1101','1100','0111','1011','0100','0010','1000'),

  ('1101','0111','0000','1001','0011','0100','0110','1010','0010','1000','0101','1110','1100','1011','1111','0001'),

  ('1101','0110','0100','1001','1000','1111','0011','0000','1011','0001','0010','1100','0101','1010','1110','0111'),

  ('0001','1010','1101','0000','0110','1001','1000','0111','0100','1111','1110','0011','1011','0101','0010','1100'));

  s4 : array [0..3, 0..15] of string[4] =

  (('0111','1101','1110','0011','0000','0110','1001','1010','0001','0010','1000','0101','1011','1100','0100','1111'),

  ('1101','1000','1011','0101','0110','1111','0000','0011','0100','0111','0010','1100','0001','1010','1110','1001'),

  ('1010','0110','1001','0000','1100','1011','0111','1101','1111','0001','0011','1110','0101','0010','1000','0100'),

  ('0011','1111','0000','0110','1010','0001','1101','1000','1001','0100','0101','1011','1100','0111','0010','1110'));

  s5 : array [0..3, 0..15] of string[4] =

  (('0010','1100','0100','0001','0111','1010','1011','0110','1000','0101','0011','1111','1101','0000','1110','1001'),

  ('1110','1011','0010','1100','0100','0111','1101','0001','0101','0000','1111','1010','0011','1001','1000','0110'),

  ('0100','0010','0001','1011','1010','1101','0111','1000','1111','1001','1100','0101','0110','0011','0000','1110'),

  ('1011','1000','1100','0111','0001','1110','0010','1101','0110','1111','0000','1001','1010','0100','0101','0011'));

  s6 : array [0..3, 0..15] of string[4] =

  (('1100','0001','1010','1111','1001','0010','0110','1000','0000','1101','0011','0100','1110','0111','0101','1011'),

  ('1010','1111','0100','0010','0111','1100','1001','0101','0110','0001','1101','1110','0000','1011','0011','1000'),

  ('1001','1110','1111','0101','0010','1000','1100','0011','0111','0000','0100','1010','0001','1101','1011','0110'),

  ('0100','0011','0010','1100','1001','0101','1111','1010','1011','1110','0001','0111','0110','0000','1000','1101'));

  s7 : array [0..3, 0..15] of string[4] =

  (('0100','1011','0010','1110','1111','0000','1000','1101','0011','1100','1001','0111','0101','1010','0110','0001'),

  ('1101','0000','1011','0111','0100','1001','0001','1010','1110','0011','0101','1100','0011','1111','1000','0110'),

  ('0001','0100','1011','1101','1100','0011','0111','1110','1010','1111','0110','1000','0000','0101','1001','0010'),

  ('0110','1011','1101','1000','0001','0100','1010','0111','1001','0101','0000','1111','1110','0010','0011','1100'));

  s8 : array [0..3, 0..15] of string[4] =

  (('1101','0010','1000','0100','0110','1111','1011','0001','1010','1001','0011','1110','0101','0000','1100','0111'),

Информация о работе Разработка программы шифрования и дешифрования текста методом DES