Ãëàâíàÿ Ó÷åáíèêè - Ðàçíûå Ëåêöèè (ðàçíûå) - ÷àñòü 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  ðåçóëüòàòå òåñòèðîâàíèÿ áûëî óñòàíîâëåíî , ÷òî ïðîãðàììà ðàáîòàåò èñïðàâíî è âûïîëíÿåò âîçëîæåííûå íà íåå ôóíêöèè ïðàâèëüíî. 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.
| |||||||||||||||||||||||