- •1 Теоретические основы разработки
- •1.1 Криптографический метод защиты данных
- •1.2 Классификация методов шифрования
- •1.2.1 Симметричные криптосистемы
- •1.2.2 Ассиметричные криптосистемы
- •1.3 Шифрование методом перестановки
- •2 Программная реализация шифра перестановки
- •2.1 Постановка задачи
- •2.2 Требования к программе
- •2.3 Проектирование
- •2.4 Алгоритм представления задачи
- •2.5 Проектирование пользовательского интерфейса
- •2.6 Тестирование в нормальных условиях
- •2.7 Общие сведения о программном продукте
- •2.8 Описание запуска
- •2.9 Интерфейс
- •Герасименко в.А., Размахнин м.К. "Криптографические методы в автоматизированных системах" Зарубежная радиоэлектроника,1982,n8
Герасименко в.А., Размахнин м.К. "Криптографические методы в автоматизированных системах" Зарубежная радиоэлектроника,1982,n8
2. Сяо Д., Керр Д., С.Мэдник "Защита ЭВМ",М.,Мир,1982 - рассмотрены практически все аспекты защиты информации в вычислительных и автоматизированных системах.
3. Хоффман Л.Дж. Современные методы защиты информации. М.,Сов.радио, 1980 - наиболее полная и серьезная монография по теории и практике защиты информации
4. Джефф П.Р. Электроника,1973,т.46,N1 - шифрование данных методом гаммирования.
5. Уолкер Б.Дж., Блейк Я.Ф. Безопасность ЭВМ и организация их защиты.-М.:Связь,1980 - рассматриваются криптографические методы защиты информации, защита данных в файлах или базах данных.
6. Мануильямс Ф.Ж.,Слоан Н.Дж. ТИИЭР,1976,т.64,N12 - детально описаны способы формирования и свойства псевдослучайных последовательностей, которые используются при шифровании данных методом гаммирования.
Стандарт шифрования данных Data Encryption Standard
Источники:
Алгоритмы шифрования.-[Электронный ресурс].Режим доступа:http://www.connect.ru/article.asp?id=5113
Страничка классических блочных шифров.-[Электронный ресурс].Режим доступа:http://www.enlight.ru/crypto/frame.htm
Начинающим.-[Электронный ресурс].Режим доступа:http://wincrypt.chat.ru/begin.html
Приложение
unit Unit1;
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.