Автор работы: Пользователь скрыл имя, 14 Апреля 2013 в 13:17, курсовая работа
Криптография – бұл ақпаратты қорғау ғылымы. Қорғау шифрлеу арқылы жетеді,яғни арнайы кілттік ақпаратты білмей қорғалған кіріс деректерінің қиын ашылуын жасйды. Кілт жасырын сақталынатын және дәл осы уақытта мүмкін болатын шифрленуді анықтайтын, криптожүйенің оңай ауыстырылатын бір бөлігі деп түсіндіріледі.
Шифрлеу методы кем дегенде екі қасиеттерге болу үшін:
Заңды алушы кері айналымды орындау және хатты шифрді аша алады;
Хатты тартып алған қарсыластың криптоаналитигі
Кіріспе........................................................................................................................3
Алгоритм және оның қасиеттері:
а) Алгоритм DES.............................................................................................4
б) Алгоритм New DES...................................................................................6
Криптографиялық алгоритмдердің баға критерілері.............................................7
Блоктік шифр алгоритмінің бағалануының жылдамдығы..................................10
Қолданушы интерфейс түсініктемесі...................................................................12
Программа листингі...............................................................................................13
Қорытынды..............................................................................................................25
Пайдаланылған әдебиеттер тізімі..........................................................................26
Тілдерге арналған
критерилерді құру
Криптоанализдің дифференциалды тәсілі
Дифференциалды криптоанализ
– бұл блоктік шифрдың құпия
кілтін шешуге тырысуы r разрядты
рауындылық функция
Криптоанализдің сызықтық тәсілі
Әдетте шифрлеу кезінде
2 модуль бойынша кілттік
Блоктік шифр алгоритмінің бағалануының жылдамдығы
Кез-келген криптографикалық
алгоритмдердің маңызды парамет
Интер активті блоктік
шифрлауды анализдеу
– гаммирлеу (XOR) – g;
– көбейту – s;
– жылжыту – m;
– кесте түрінде орналастыру (S – блокті алгоритмдер) – t.
Элементарлы операцияларды
бағалау үшін арналған блоктік
шифрлаудағы кең таралумен
Осыларды салыстыруға
прототип режимінде DES, NEWDES алгоритмін
алайық. Себебі бұл алгоритмдер
үшін қалыптылық және
DES алгоритмінің раунды кестелік орналастырулардың кеңейтілген және жинақталған еседі ретінде кілтпен қосу және беттік орналастыруларды келесідей сипаттауға болады:
Round DES = 16 * t + 2 * g + 32 * r
Орналастыруды басқарушы және аяқтаушы раунд санының есебімен келесіні аламыз:
DES = 2 * 64 * r + 16 (16 * t + 2 * g + 32 * r) = 640 * r + 256 * t + 32 * g
Ал 17 раундтан DES алгоритмі үшін раундты былай бағалаймыз:
Round New DES = 16 * g + 8 * f
Мұндағы, f – ауыстыру және мәліметтерді біріктіруші раундтық функция осыдан кейін New DES алгоритмінің толығымен келесі үлгі бойынша көрсетуге болады:
New DES = 17 * (16 * g + 8 * (g + t)) = 272 * g + 136 * g +136 * t
Операциялар санынан алынған бағалауды 2 – кестедегідей біріктіруге болады:
Алгоритм |
Жылдамдығы |
DES |
DES = 640 * r + 256 * t + 32 * g |
New DES |
New DES = 272 * g + 136 * f |
2-кесте. Элементарлы операциядағы
блоктік шифрлаудағы алгоритмде
RSA алгоритмі
блоктік шифрдың басқа
Программа интерфейсі негізігі, бір терезеден тұрады. Жоғарғы бөлігінде кілт сөз жазатын жолақша бар. Кілт сөз 8 символдан құрылуы тиіс. Ал келесі төменгі қабатына шифрлеуге арналған мәтінді енгізіңіз.
Символдар саны қысқартылған 8 болуы керек, келесі жаңа қатарға өту 2символ болып саналады. Жазуды жеңілдету үшін, енгізу терезесінде жазылған символдар саны көрсетіледі. Енгізу кезінде мәтін автоматты түрде бинарлық кодқа ауыстырылады. Бұл алгоритм жұмысының көрнектiлiгi үшiн iстелінген.
Мәтінді енгізіп болғаннан кейін, шифрлау үшін «Encode» кнопкасын басыңыз. Егер қысқартылған 8 шарты орындалмаса, онда экранға ERROR(қате) хабарламасы шығады.
Шифрлеу аяқталғаннан кейін төменгі терезеде шифрленген мәтін және оның бинарлық интерпретациясы пайда болады.
Кері шифрлеу үшін шифрленген мәтінді қайта енгізіп және дұрыс кілт сөзін жазып «Decode» кнопкасын басыңыз.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DES, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Memo1: TMemo;
Button1: TButton;
Label3: TLabel;
Memo2: TMemo;
Button2: TButton;
Memo3: TMemo;
Label4: TLabel;
Memo4: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Memo2Change(Sender: TObject);
private
{ Private declarations }
public
Data:TBitString;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
I:Integer;
S:String;
begin
IF ((Length(Memo1.Text)mod 8 <> 0) OR (Length(Edit1.Text)mod 8 <> 0)) Then
Begin
MessageBox(Handle,
'Количество букв
в сообщении должно быть
#10#13'Ключ должен состоять из 8 символов',
Nil,MB_ICONSTOP);
Exit;
End;
SetLength(Data,0);
I:=1;
While I<=Length(Memo1.Text) Do
Begin
S:=Copy(Memo1.Text,I,8);
Data:=ConcatBits([Data,
I:=I+8;
End;
Memo2.Text:=BinToAnsiStr(Data)
end;
procedure TForm1.Button2Click(Sender: TObject);
var
I:Integer;
begin
IF ((Length(Memo2.Text)mod 8 <> 0) OR (Length(Edit1.Text)mod 8 <> 0)) Then
Begin
MessageBox(Handle,
'Количество букв
в сообщении должно быть
#10#13'Ключ должен состоять из 8 символов',
Nil,MB_ICONSTOP);
Exit;
End;
SetLength(Data,0);
I:=1;
While I<=Length(Memo2.Text) Do
Begin
Data:=ConcatBits([Data,
I:=I+8;
End;
Memo1.Text:=BinToAnsiStr(Data)
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
IF Memo1.Text<>'' Then
Memo3.Text:=BinToStr(
Else Memo3.Clear;
Label2.Caption:='Message - ('+IntToStr(Length(Memo1.Text)
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.OnChange(Self);
Edit1.OnChange(Self);
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
Label4.Caption:=IntToStr(
end;
procedure TForm1.Memo2Change(Sender: TObject);
begin
IF Memo2.Text<>'' Then
Memo4.Text:=BinToStr(
Else Memo4.Clear;
Label3.Caption:='Encoded message - ('+IntToStr(Length(Memo2.Text)
end;
end.
unit DES;
interface
Uses Windows, Classes, SysUtils, Math, Dialogs;
Type
TBitString = Array of Boolean;
PBitString = ^TBitString;
TSplitKeyParts = record
C:TBitString;
D:TBitString;
end;
TSplitKey = Array[0..16]Of TSplitKeyParts;
TConcatKey = Array[0..15]Of TBitString;
TIPKeyParts = record
L:TBitString;
R:TBitString;
end;
TIPKey = Array[0..16]OF TIPKeyParts;
Const
DES_PC1:Array[0..55] Of Byte = (57,49,41,33,25,17,9,
DES_PC2:Array[0..47] Of Byte = (14,17,11,24,1,5,
DES_IP:Array[0..63] Of Byte = (58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7);
DES_E:Array[0..47] Of Byte = (32,1,2,3,4,5,
4,5,6,7,8,9,
8,9,10,11,12,13,
12,13,14,15,16,17,
16,17,18,19,20,21,
20,21,22,23,24,25,
24,25,26,27,28,29,
28,29,30,31,32,1);
S_BOXES:Array[0..7,0..3,0..15]
((14,04,13,01,02,15,11,08,03,
(00,15,07,04,14,02,13,01,10,
(04,01,14,08,13,06,02,11,15,
(15,12,08,02,04,09,01,07,05,
((15,01,08,14,06,11,03,04,09,
(03,13,04,07,15,02,08,14,12,
(00,14,07,11,10,04,13,01,05,
(13,08,10,01,03,15,04,02,11,
((10,00,09,14,06,03,15,05,01,
(13,07,00,09,03,04,06,10,02,08
(13,06,04,09,08,15,03,00,11,
(01,10,13,00,06,09,08,07,04,