Ãëàâíàÿ      Ó÷åáíèêè - Ðàçíûå     Ëåêöèè (ðàçíûå) - ÷àñòü 34

 

Ïîèñê            

 

Êîìïîíåíò ïðîãðàììíîãî êîìïëåêñà äëÿ øèôðîâàíèÿ/äåøèôðîâàíèÿ äàííûõ

 

             

Êîìïîíåíò ïðîãðàììíîãî êîìïëåêñà äëÿ øèôðîâàíèÿ/äåøèôðîâàíèÿ äàííûõ

Ââåäåíèå

 íàñòîÿùåå âðåìÿ ñóùåñòâóåò îãðîìíîå êîëè÷åñòâî ðàçíîîáðàçíûõ ïðîãðàìì øèôðîâàíèÿ/äåøèôðîâàíèÿ . Îíè â çíà÷èòåëüíîé ìåðå ïîçâîëÿþò ïîâûñèòü ñòåïåíü çàùèùåííîñòè òåêñòîâûõ äàííûõ.

 äàííîì ïðîåêòå ïðåäñòàâëåí êîìïîíåíò ïðîãðàììíîãî êîìïëåêñà äëÿ øèôðîâàíèÿ/äåøèôðîâàíèÿ äàííûõ, êîòîðûé ìîæåò áûòü èñïîëüçîâàí êàê â äîìàøíèõ, òàê è â êîììåð÷åñêèõ óñëîâèÿõ.


1. Ïîñòàíîâêà çàäà÷è

Òðåáóåòñÿ ðàçðàáîòàòü ïðîãðàììó ïîçâîëÿþùóþ ðåàëèçîâàòü øèôðîâàíèå è äåøèôðîâàíèå òåêñòîâîãî ôàéëà ìåòîäîì çàìåíû è ìåòîäîì ïåðåñòàíîâêè (íå ìåíåå äâóõ ñïîñîáîâ)


2. Òðåáîâàíèÿ ê ïðîãðàììå

2.1 Òðåáîâàíèÿ ê ôóíêöèîíàëüíûì õàðàêòåðèñòèêàì

Ñèñòåìà äîëæíà îáåñïå÷èâàòü âîçìîæíîñòü âûïîëíåíèÿ ñëåäóþùèõ ôóíêöèé:

· Ââîä èñõîäíûõ äàííûõ (ñ êëàâèàòóðû, èç ôàéëà)

· Âûáîð àëãîðèòìà øèôðîâàíèÿ/äåøèôðîâàíèÿ

· Ñîõðàíåíèå çàøèôðîâàííûõ äàííûõ

· Äåøèôðîâàíèå äàííûõ ïî èñõîäíîìó àëãîðèòìó øèôðîâàíèÿ

· Ñîõðàíåíèå äåøèôðîâàííûõ äàííûõ â ôàéë

2.2 Òðåáîâàíèÿ ê íàäåæíîñòè

Îáåñïå÷èòü öåëîñòíîñòü õðàíèìîé èíôîðìàöèè.

2.3 Òðåáîâàíèÿ ê ñîñòàâó è ïàðàìåòðàì òåõíè÷åñêèõ ñðåäñòâ

Ñèñòåìà äîëæíà ðàáîòàòü íà IBM-ñîâìåñòèìûõ ïåðñîíàëüíûõ êîìïüþòåðàõ. Ìèíèìàëüíàÿ êîíôèãóðàöèÿ: òèï ïðîöåññîðà – Pentium è âûøå; îáúåì ÎÇÓ – 32 Ìá è âûøå.

2.4 Òðåáîâàíèÿ ê èíôîðìàöèîííîé è ïðîãðàììíîé ñîâìåñòèìîñòè

Ñèñòåìà äîëæíà ðàáîòàòü ïîä óïðàâëåíèåì îïåðàöèîííûõ ñèñòåì ñåìåéñòâà Windows, ðåàëèçóþùèõ Win32 API.


3. Ïðîåêòèðîâàíèå

Âûáîð àðõèòåêòóðû ïðîãðàììíîãî îáåñïå÷åíèÿ

Ýòîò ïðîåêò èìååò îäíîïîëüçîâàòåëüñêóþ àðõèòåêòóðó, òàê êàê ðàññ÷èòàí íà ðàáîòó ñ îäíèì ïîëüçîâàòåëåì.

Âûáîð ÿçûêà è ñðåäû ïðîãðàììèðîâàíèÿ

 êà÷åñòâå ñðåäû ïðîãðàììèðîâàíèÿ áûë èñïîëüçîâàí BorlandDelphi 7, îñíîâàííûé íà ÿçûêå ObjectPascal. Îí áûë âûáðàí, ïîòîìó ÷òî îí ðåàëèçóåò âîçìîæíîñòü èñïîëüçîâàíèÿ âèçóàëüíîãî ïðîãðàììèðîâàíèÿ, ÷òî î÷åíü âàæíî äëÿ äàííîãî ïðîåêòà. Òàê æå åãî ìîãóò èñïîëüçîâàòü ïðîãðàììèñòû ñî ñðåäíèì óðîâíåì ïîäãîòîâêè.

Delphi 7 ïîçâîëÿåò ñîçäàâàòü ìàññèâû îáúåêòîâ, èìååò âñòðîåííûå ôóíêöèè ïðåîáðàçîâàíèÿ äàííûõ, ïîçâîëÿåò ðàáîòàòü ñ ôàéëàìè, ãðàôè÷åñêèìè ýëåìåíòàìè è ñîçäàâàòü ìíîãîîêîííûé ðåæèì.

Âûáîð ñïîñîáà îðãàíèçàöèè âõîäíûõ è âûõîäíûõ äàííûõ

1.Ïðåäñòàâëåíèå â îïåðàòèâíîé ïàìÿòè

Ïðåäñòàâëåíèå äàííûõ â îïåðàòèâíîé ïàìÿòè äëÿ ïðîãðàììû «DQ_decoder» îñóùåñòâëÿåòñÿ ÷åðåç ïåðåìåííûå(òèï ïåðåìåííûõ óêàçàí â Ïðèëîæåíèè 2.)

Âõîäíûå äàííûå:

· Ââîä èñõîäíîãî òåêñòà ñ êëàâèàòóðû

· ×òåíèå òåêñòà èç ôàéëà

Âûõîäíûå äàííûå:

· Êîäèðîâàííûé òåêñò â äèàëîãîâîì îêíå

2.Ïðåäñòàâëåíèå âî âíåøíåé ïàìÿòè

Âûõîäíûå äàííûå âî âíåøíåé ïàìÿòè â ïðîãðàììå ïðåäñòàâëåíû â âèäå òåêñòîâîãî ôàéëà. Èìÿ âûõîäíîãî ôàéëà äëÿ ïðîãðàììû «DQ_decoder» ôîðìèðóåòñÿ ñàìèì ïîëüçîâàòåëåì.

3.Ñòðóêòóðíàÿ ñõåìà ïðîãðàììíîãî ïðîäóêòà

Ñòðóêòóðíîé íàçûâàþò ñõåìó îòðàæàþùóþ ñîñòàâ è âçàèìîäåéñòâèå ïî óðàâíåíèþ ÷àñòåé ðàçðàáàòûâàåìîãî ÏÎ.


4. Àëãîðèòì ïðåäñòàâëåíèÿ çàäà÷è

øèôðîâàíèå ïðîãðàììà òåêñòîâûé çàìåíà

1)Ââîä ïîëüçîâàòåëüñêèõ äàííûõ;

2)Âûáîð ñïîñîáà øèôðîâàíèÿ/äåøèôðîâàíèÿ;

3)Øèôðîâàíèå/äåøèôðîâàíèå;

4)Âûâîä ðåçóëüòàòà;

5)Ñîõðàíåíèå ðåçóëüòàòà â ôàéë;


5. Ïðîåêòèðîâàíèå ïîëüçîâàòåëüñêîãî èíòåðôåéñà

Ïîëüçîâàòåëüñêèé èíòåðôåéñ ïðåäñòàâëÿåò ñîáîé ñîâîêóïíîñòü ïðîãðàììíûõ è àïïàðàòíûõ ñðåäñòâ, îáåñïå÷èâàþùèõ âçàèìîäåéñòâèå ïîëüçîâàòåëÿ ñ êîìïüþòåðîì.

Èíòåðôåéñ ðåàëèçîâàí â âèäå èíòåðôåéñà-ìåíþ.(Ðèñ. 4) Ïîçâîëÿåò ïîëüçîâàòåëþ âûáèðàòü íåîáõîäèìûå îïåðàöèè èç ñïåöèàëüíîãî ñïèñêà, âûâîäèìîãî ïðîãðàììîé.

5.1 Òåñòèðîâàíèå â íîðìàëüíûõ óñëîâèÿõ

Òèï êîíòðîëÿ ïðîãðàììû: ðó÷íîé êîíòðîëü.

Ðåçóëüòàòû ïðåäîñòàâëåíû â Òàáë.1

Íîìåð òåñòà Âõîäíûå äàííûå Ïîëó÷åííûé ðåçóëüòàò
Çàøèôðîâàíî Ðàñøèôðîâàíî
1.Øèôðîâàíèå ñ ïàðîëåì(123) Hello, World! z˜�ž¢, Š ¤Ÿ•S Hello, World!
2.Øèôðîâàíèå ïåðåñòàíîâêîé 1 Hello, World! ï2:@=%îú=::3 Hello, World!
3.Øèôðîâàíèå ïåðåñòàíîâêîé 2 Hello, World! ù<DJG/øGDD= Hello, World!

 ðåçóëüòàòå òåñòèðîâàíèÿ áûëî óñòàíîâëåíî , ÷òî ïðîãðàììà ðàáîòàåò èñïðàâíî è âûïîëíÿåò âîçëîæåííûå íà íåå ôóíêöèè ïðàâèëüíî.

5.2 Îáùèå ñâåäåíèÿ î ïðîãðàììíîì ïðîäóêòå

Ïðîãðàììà «DQ_decoder» ïîçâîëÿåò øèôðîâàòü/äåøèôðîâàòü òåêñòîâûå äàííûå òðåìÿ ñïîñîáàìè (øèôðîâàíèå ñ ïàðîëåì, øèôðîâàíèå ïåðåñòàíîâêîé 1 , øèôðîâàíèå ïåðåñòàíîâêîé 2). Èñõîäíûå äàííûå ìîæíî ââîäèòü ñ êëàâèàòóðû, à òàêæå èç âíåøíåãî ôàéëà. Ðåçóëüòàò ìîæíî ñîõðàíèòü âî âíåøíèé òåêñòîâûé ôàéë.

Ïðåäïîëàãàåòñÿ ÷òî ïðîãðàììà áóäåò èñïîëüçîâàòüñÿ ïðåïîäàâàòåëÿìè äëÿ êîäèðîâàíèÿ äàííûõ, ïðåäíàçíà÷åííûõ â êà÷åñòâå ïðàâèëüíûõ îòâåòîâ â òåñòàõ.

Äëÿ ðàáîòû ñ ïðîãðàììîé íåîáõîäèìî ñêîïèðîâàòü åå íà æåñòêèé äèñê (íåîáõîäèìî 4652 êá ìåñòà íà æåñòêîì äèñêå) ëèáî çàïóñêàòü ñ èñõîäíîãî íîñèòåëÿ.

5.3 Îïèñàíèå çàïóñêà

Çàïóñòèòü ïðîãðàììó ìîæíî íåñêîëüêèìè ñïîñîáàìè:

· Äâîéíûì ùåë÷êîì ïî èêîíêå «DQ_decoder»

· Âûáðàòü è çàïóñòèòü èç ìåíþ «Ïóñê» ïóíêò «Âûïîëíèòü» è ïðîïèñàòü ïîëíûé ïóòü äî ïðèëîæåíèÿ (íàïðèìåð D:\ProgramFiles\DQ_decoder\DQ_decoder.exe)

· Íàæàòü ïðàâîé êíîïêîé ìûøè íà èêîíêå «DQ_decoder», è âûáðàòü «Îòêðûòü».

5.4 Èíòåðôåéñ

Ïðè çàãðóçêå ïðîãðàììû «DQ_decoder» íà ýêðàíå ïîÿâèòñÿ îêíî. Ýòî îêíî áóäåò èìåòü âèä, ïðåäñòàâëåííûé íà Ðèñ. 6

Êíîïêè

· «Êîäèðîâàòü» ïîçâîëÿåò çàêîäèðîâàòü èñõîäíûé òåêñò ïî çàäàííîìó àëãîðèòìó

· «Äåêîäèðîâàòü» ïîçâîëÿåò äåêîäèðîâàòü òåêñò ïî çàäàííîìó àëãîðèòìó

Ìåíþ

Îêíî ïðîãðàììû èìååò ñëåäóþùåå ìåíþ, êîòîðîå ñîäåðæèò âêëàäêè:

· Ôàéë. Â ýòîé çàêëàäêå åñòü ïóíêòû «Îòêðûòü», «Ñîõðàíèòü êàê», «Âûõîä» ñ ñîîòâåòñòâóþùèìè ôóíêöèÿìè.

· Ñïðàâêà. Â ýòîé çàêëàäêå åñòü ïóíêòû «Î ïðîãðàììå», «Îá àâòîðå», «Èíñòðóêöèÿ» ñ ñîîòâåòñòâóþùèìè ôóíêöèÿìè.

Ñïîñîá çàâåðøåíèÿ ðàáîòû

Ðàáîòà ïðîãðàììû ìîæåò áûòü çàâåðøåíà ñëåäóþùèìè ñïîñîáàìè:

· Ñòàíäàðòíûé ñïîñîá ïðèíÿòûé â OSWindows

· Íàæàâ íà êíîïêó «Ôàéë» - > «Âûõîä».


Çàêëþ÷åíèå

Äàííàÿ ïðîãðàììà ìîæåò âûïîëíÿòü âñå ïîñòàâëåííûå ïåðåä íåé çàäà÷è â ñîîòâåòñòâèå ñ òåõíè÷åñêèì çàäàíèåì.  äàëüíåéøåì âîçìîæíî ðàñøèðåíèå âîçìîæíîñòåé ýòîé ïðîãðàììû. Ìîæíî äîáàâèòü áîëüøåå êîëè÷åñòâî ñïîñîáîâ øèôðîâàíèÿ, à òàê æå ðàñøèðèòü ïîëüçîâàòåëüñêèé èíòåðôåéñ. Ïðåäîñòàâëåííàÿ âåðñèÿ ïðîãðàììû ìîæåò áûòü èñïîëüçîâàíà â ëþáîì ó÷åáíîì çàâåäåíèè â êà÷åñòâå ó÷åáíîãî ïîñîáèÿ. Èíòåðôåéñ ïðîãðàììû èíòóèòèâíî ïîíÿòåí, ÷òî ïîçâîëèò ïîëüçîâàòåëþ â êîðîòêèé ñðîê îñâîèòü ðàáîòó ñ ïðîãðàììîé.


Ñïèñîê ëèòåðàòóðû

1. Ãîñóäàðñòâåííûé îáðàçîâàòåëüíûé ñòàíäàðò ïî íàïðàâëåíèþ 654600 "Èíôîðìàòèêà è âû÷èñëèòåëüíàÿ òåõíèêà" ñïåöèàëüíîñòè 230105 "Ïðîãðàììíîå îáåñïå÷åíèå âû÷èñëèòåëüíîé òåõíèêè è àâòîìàòèçèðîâàííûõ ñèñòåì".

2. ÃÎÑÒ 2.105-79 Åäèíàÿ ñèñòåìà êîíñòðóêòîðñêîé äîêóìåíòàöèè. Îáùèå òðåáîâàíèÿ ê òåêñòîâûì äîêóìåíòàì.

3.ÃÎÑÒ 2.105-95 Åäèíàÿ ñèñòåìà êîíñòðóêòîðñêîé äîêóìåíòàöèè. Îáùèå òðåáîâàíèÿ ê òåêñòîâûì äîêóìåíòàì.

4. ÃÎÑÒ 7.1-84 Ñèñòåìà ñòàíäàðòîâ ïî èíôîðìàöèè, áèáëèîòå÷íîìó è èçäàòåëüñêîìó äåëó. Áèáëèîãðàôè÷åñêîå îïèñàíèå äîêóìåíòà. Îáùèå òðåáîâàíèÿ è ïðàâèëà ñîñòàâëåíèÿ.

5. ÃÎÑÒ 7.32-2001 Ñèñòåìà ñòàíäàðòîâ ïî èíôîðìàöèè, áèáëèîòå÷íîìó è èçäàòåëüñêîìó äåëó. Îò÷åò î íàó÷íî-èññëåäîâàòåëüñêîé ðàáîòå. Ñòðóêòóðà è ïðàâèëà îôîðìëåíèÿ.

6. Êóðñîâîå ïðîåêòèðîâàíèå: Ó÷åáíî-ìåòîäè÷åñêîå ïîñîáèå./ Æèâîäåðîâà Â.Â., - Äìèòðîâ: ÄÏÊ, 2005. - 67 ñ.

7. Èíòåðíåò ðåñóðñû (google.ru).


Ïðèëîæåíèå

unitUnit1;

interface

uses

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

Dialogs, StdCtrls, ComCtrls, Menus;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Edit1: TEdit;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

Memo1: TMemo;

Memo2: TMemo;

N8: TMenuItem;

procedure N8Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

function Chislo: integer;

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1; f,k:string; t:array[1..1000] of integer;

implementation

uses Unit2, Unit3, Unit4;

{$R *.dfm}

function TForm1.Chislo: integer;

var

i: integer;

begin

for i:=0 to Length(Edit1.Text) do

result:=result+Ord(Edit1.Text[i])+17;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

memo1.Text:='';

memo2.Text:='';

end;

procedure TForm1.N2Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

f:=OpenDialog1.FileName;

Memo1.Lines.LoadFromFile(f);

end;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

if SaveDialog1.Execute then

begin

k:=SaveDialog1.FileName;

Memo2.Lines.SaveToFile(k);

end;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

close;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

form2.visible:=true;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

form3.visible:=true;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

form4.visible:=true;

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Button1.visible:=true;

Button2.visible:=true;

Button3.visible:=false;

Button4.visible:=false;

Button5.visible:=false;

Button6.visible:=false;

edit1.visible:=true;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Button1.visible:=false;

Button2.visible:=false;

Button3.visible:=true;

Button4.visible:=true;

Button5.visible:=false;

Button6.visible:=false;

edit1.visible:=false;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

Button1.visible:=false;

Button2.visible:=false;

Button3.visible:=false;

Button4.visible:=false;

Button5.visible:=true;

Button6.visible:=true;

edit1.visible:=false;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

d: byte;

i: integer;

begin

f:=memo1.Text;

k:=Edit1.Text;

for i := 1 to Length(f) do

if (f[i]<>' ')AND(f[i]<>'.')AND(f[i]<>';')AND(f[i]<>',') then

f[i]:=Chr( Ord(f[i])+Ord(k[i mod length(k)+1])mod 256) else f[i]:=f[i];

memo2.Text:=f;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

d: byte;

i: integer;

begin

f:=memo1.Text;

for i := 1 to Length(f) do

if (f[i]<>' ') AND(f[i]<>'.')AND(f[i]<>';')AND(f[i]<>',') then

f[i]:=Chr((Ord(f[i])-Ord(Edit1.text[(i mod length(Edit1.text))+1]))mod 256);

memo2.Text:=f;

{ ProgressBar1.Max:=f.Size;

for i:=0 to f.Size-1 do

begin

f.Position:=i;

k.Position:=i;

f.Read(d,1);

d:=d-((i*85)-i+Chislo+28*i+(2*i+5-i-1));

k.Write(d,1);

ProgressBar1.Position:=i;

Application.ProcessMessages;

if Application.Terminated then Break;

end;

ProgressBar1.Position:=i;

k.Free;

f.Free; }

end;

procedure TForm1.Button3Click(Sender: TObject);

var i:longint;u,t:integer; y,w,o:string;

begin

f:=memo1.Text;

k:=Edit1.Text;

for i := length(f) downto 1 do

begin

y:=y+f[i];

end;

for i:=1 to length(f) do

begin

u := Ord(y[i]) ;

u:=u-50;

w:=w+chr(u);

end;

memo2.Text:=w;

memo2.Text:=w;

end;

procedure TForm1.Button4Click(Sender: TObject);

var i,u:integer; y,w,o:string;

begin

f:=memo2.Text;

for i := length(f) downto 1 do

begin

y:=y+f[i];

end;

for i:=1 to length(f) do

begin

u := Ord(y[i]) ;

u:=u+50;

w:=w+chr(u);

end;

memo2.Text:=w;

end;

procedure TForm1.Button5Click(Sender: TObject);

var i,u:integer; y,w,o:string;

begin

f:=memo1.Text;

for i := length(f) downto 1 do

begin

y:=y+f[i];

end;

for i:=1 to length(f) do

begin

u := Ord(y[i]) ;

u:=u-40;

w:=w+chr(u);

end;

memo2.Text:=w;

end;

procedure TForm1.Button6Click(Sender: TObject);

var i,u:integer; y,w,o:string;

begin

f:=memo1.Text;

for i := length(f) downto 1 do

begin

y:=y+f[i];

end;

for i:=1 to length(f) do

begin

u := Ord(y[i]) ;

u:=u+40;

w:=w+chr(u);

end;

memo2.Text:=w;

end;

end.