Программные средства защиты информации в сетях

Разработка программного обеспечения для реализации криптографической защиты информации. Обоснование выбора аппаратно-программных средств. Проектирование модели информационных потоков данных, алгоритмического обеспечения, структурной схемы программы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 10.11.2014
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

20. Религии мира. Справочник. -- Пер. с англ.: М.: Белфаксиздатгрупп, 1994.

21. Романец Ю. В., Тимофеев П. А., Шаньгин В. Ф. Защита информации в компьютерных системах и сетях. 2-е издание -- М: Радио и связь, 2001 -- 376 с.

22. Ростовцев А. Г., Маховенко Е. Б. Два подхода к анализу блочных шифров // http://www.ssl.stu.neva.ru -- Проблемы информационной безопасности. Компьютерные системы. 2002. № 1.

23. Ростовцев А. Г., Маховенко Е. Б., Филиппов А. С, Чечулин А. А. О стойкости ГОСТ 28147-89 // http://www.ssl.stu.neva.ru. -- СПбГПУ.

24. Соколов А. В., Шаньгин В. Ф. Защита информации в распределенных корпоративных сетях и системах. -- М.: ДМК Пресс, 2002. 656 с.

25. Фейстель X. Криптография и компьютерная безопасность. -- Пер. с англ.: А. Винокуров -- http://avin.chat.ru (Перевод по изданию: Feistel К Cryptography and Computer Privacy, Scientific American, May 1973, Vol. 228, No. 5, pp. 15-23).

26. Шеннон К. Теория связи в секретных системах. -- Пер. с англ.: В. Ф. Писаренко. -- http://info.phys.msu.su. -- 1949.

27. Шнайер Б. Курс самоподготовки по криптоанализу блочных шифров. -- Пер. с англ: Быбин С. С. -- http://bybin.narod.ru.

28. Adams С. RFC 2144: The CAST-128 Encryption Algorithm // Entrust Technologies, May 1997 -- http://www.ietf.org.

29. Adams C, Gilchrist J. RFC 2612: The CAST-256 Encryption Algorithm // Entrust Technologies, June 1999 -- http://www.ietf.org.

30. Advanced Encryption Standard (AES). Questions and Answers // http://csrc.nist.gov -- January 28, 2002.

31. AES Round 1 Information // http://csrc.nist.gov -- January 26, 2001.

32. Anderson R., Biham E. Two Practical and Provably Secure Block Ciphers: BEAR and LION // http://citeseer.ist.psu.edu -- 1995.

33. Anderson R., Biham E., Knudsen L. Serpent: A Proposal for the Advanced Encryption Standard // http://csrc.nist.gov.

34. Aoki K., Ichikawa Т., Kanda M., Matsui M., Moriai S., Nakajima J., Tokita T. Camellia: A 128-Bit Block Cipher Suitable for Multiple Platforms // http://www.mirrors.wiretapped.net -- July 13, 2000.

35. Baldwin R., Rivest R. RFC 2040: The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms // http://www.ietf.org -- October 1996.

36. Bar-El H., Choukri H., Naccache D., Tunstall M., Whelan C. The Sorcerer's Apprentice Guide to Fault Attacks // http://citeseer.ist.psu.edu.

37. Barkan E., Biham E., Keller N. Instant Ciphertext-Only Cryptanalysis of GSM Encrypted Communication // http://www.cs.technion.ac.il -- 2006.

38. Barreto P. S. L. M., Rijmen V. The Anubis Block Cipher // http://www.cosicesat.kuIeuven.be.

Приложение. Исходный текст программы

unit Main;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, XPMan, StdCtrls, DCPrijndael, DCPcrypt2, DCPblockciphers;

type

TForm1 = class(TForm)

XPManifest1: TXPManifest;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

Button4: TButton;

Button5: TButton;

ComboBox1: TComboBox;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

procedure N2Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses ShifrMessage;

{$R *.dfm}

procedure TForm1.N2Click(Sender: TObject);

begin

Form1.Close;

end;

procedure TForm1.N1Click(Sender: TObject);

begin

Form2.ShowModal;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

If OpenDialog1.Execute then

begin

Edit1.Text:= OpenDialog1.FileName;

end;

If (Edit1.Text<>'') and (Edit2.Text<>'') then

Button1.Enabled:=True;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

If SaveDialog1.Execute then

begin

Edit2.Text:=SaveDialog1.FileName;

end;

If Edit1.Text=Edit2.Text then

begin

Edit2.Text:='';

MessageDlg('Имена исходного файла и файла-результата идентичны!',mtError,[mbOK],0);

end;

If (Edit1.Text<>'') and (Edit2.Text<>'') then

Button1.Enabled:=True;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

Cipher: TDCP_rijndael;

KeyStr: string;

Source, Dest: TFileStream;

begin

KeyStr:= '';

If Button1.Caption='Зашифровать' then

begin

try

Source:= TFileStream.Create(Edit1.Text,fmOpenRead);

Dest:= TFileStream.Create(Edit2.Text,fmCreate);

Cipher:= TDCP_rijndael.Create(Self);

Cipher.Init(KeyStr,sizeof(KeyStr)*8,nil);// инициализация

Cipher.EncryptStream(Source,Dest,Source.Size); // шифруем

Cipher.Burn;

Cipher.Free;

Dest.Free;

Source.Free;

MessageDlg('Файл успешно зашифрован',mtInformation,[mbOK],0);

except

MessageDlg('Ошибка ввода/вывода',mtError,[mbOK],0);

end;

end

else

begin

try

Source:= TFileStream.Create(Edit1.Text,fmOpenRead);

Dest:= TFileStream.Create(Edit2.Text,fmCreate);

Cipher:= TDCP_rijndael.Create(Self);

Cipher.Init(KeyStr,sizeof(KeyStr)*8,nil);// инициализация

Cipher.DecryptStream(Source,Dest,Source.Size); // расшифровываем

Cipher.Burn;

Cipher.Free;

Dest.Free;

Source.Free;

MessageDlg('Файл успешно расшифрован',mtInformation,[mbOK],0);

except

MessageDlg('Ошибка ввода/вывода',mtError,[mbOK],0);

end;

end;

Edit1.Text:='';

Edit2.Text:='';

Button1.Enabled:=False;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

If ComboBox1.Text='Зашифровать' then

Button1.Caption:='Зашифровать'

else

Button1.Caption:='Расшифровать';

end;

end.

unit ShifrMessage;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls,Wcrypt2;

type

TForm2 = class(TForm)

Label1: TLabel;

Button1: TButton;

mmOut: TMemo;

Button2: TButton;

mmIn: TMemo;

Button3: TButton;

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

const

Password: String = 'Пароль';

var

Prov: HCRYPTPROV;

Stream: TMemoryStream;

{$R *.dfm}

procedure TForm2.Button3Click(Sender: TObject);

begin

Form2.Close;

end;

procedure TForm2.FormCreate(Sender: TObject);

begin

CryptAcquireContext(@Prov,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);

Stream:=TMemoryStream.Create;

end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Stream.Free;

CryptReleaseContext(Prov,0);

end;

procedure TForm2.Button1Click(Sender: TObject);

var

Hash: HCRYPTHASH;

Key: HCRYPTKEY;

BufLen, DataLen: DWORD;

Str: String;

begin

Button1.Enabled:=false;

Button2.Enabled:=true;

CryptCreateHash(Prov,CALG_SHA,0,0,@Hash);

CryptHashData(Hash,PByte(Password),Length(Password),0);

CryptDeriveKey(Prov,CALG_RC2,Hash,0,@Key);

Stream.Clear;

Stream.WriteBuffer(Pointer(mmIn.Text)^,Length(mmIn.Text));

DataLen:=Length(mmIn.Text);

BufLen:=Length(mmIn.Text);

CryptEncrypt(Key,0,true,0,nil,@BufLen,0);

Stream.SetSize(BufLen);

CryptEncrypt(Key,0,true,0,PByte(Stream.Memory),@DataLen,BufLen);

SetLength(Str,BufLen);

Stream.Seek(0,soFromBeginning);

Stream.ReadBuffer(Pointer(Str)^,BufLen);

mmOut.Text:=Str;

CryptDestroyKey(Key);

CryptDestroyHash(Hash);

end;

procedure TForm2.Button2Click(Sender: TObject);

var

Hash: HCRYPTHASH;

Key: HCRYPTKEY;

DataLen: DWORD;

Str: String;

begin

Button2.Enabled:=false;

Button1.Enabled:=true;

CryptCreateHash(Prov,CALG_SHA,0,0,@Hash);

CryptHashData(Hash,PByte(Password),Length(Password),0);

CryptDeriveKey(Prov,CALG_RC2,Hash,0,@Key);

DataLen:=Stream.Size;

CryptDecrypt(Key,0,true,0,PByte(Stream.Memory),@DataLen);

SetLength(Str,DataLen);

Stream.Seek(0,soFromBeginning);

Stream.ReadBuffer(Pointer(Str)^,DataLen);

mmOut.Text:=Str;

CryptDestroyKey(Key);

CryptDestroyHash(Hash);

end;

end.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.