Пишу программу-шифратор. Файлы шифрует, а расшифровать не может. можете глянуть программный код и доделать прогу?!
Код:
type
m1=array[1..255,1..2] of integer;
m2=array[1..255,1..255] of byte;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure sort(s:string;var st1:string);
var
k:integer;
i:integer;
changed:boolean;
buf:char;
stcol1:integer;
begin
st1:=s;
stcol1:=length(st1);
repeat
changed:=FALSE;
for k:=1 to stcol1-1 do
if st1[k] > st1[k+1] then
begin
buf := st1[k];
st1[k] := st1[k+1];
st1[k+1] := buf;
changed := TRUE;
end;
until not changed;
end;
procedure soot(st1,st2:string; var q:m1);
var
i,j:integer;
begin
for i:=1 to length(st1) do
q[i,1]:=i;
for i:=1 to length(st1) do
begin
j:=1;
while st1[i]<>st2[j] do
inc(j);
q[i,2]:=j;
st2[j]:=#0;
end;
end;
Procedure change1(a1:m2;n1,n2:integer;var a2:m2);
var
q:byte;
i:integer;
Begin
for i:=1 to length(form1.LabeledEdit3.Text)do
begin
q:=a1[i,n1];
a1[i,n1]:=a1[i,n2];
a1[i,n2]:=q;
end;
a2:=a1;
end;
Procedure change2(a1:m2;n1,n2:integer;var a2:m2);
var
q:byte;
i:integer;
Begin
for i:=1 to length(form1.LabeledEdit4.Text)do
begin
q:=a1[i,n1];
a1[i,n1]:=a1[i,n2];
a1[i,n2]:=q;
end;
a2:=a1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Form1.OpenDialog1.Execute then
form1.LabeledEdit1.Text:=Form1.OpenDialog1.FileName;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Form1.SaveDialog1.Execute then
form1.LabeledEdit2.Text:=Form1.SaveDialog1.FileName;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,j,size,q,block:integer;
f1,f2:file of byte;
a:array[0..65524] of byte;
s1,s2,s3:string;
mas1,mas2:m1;
aa:m2;
begin
if (form1.LabeledEdit3.Text='')or (form1.LabeledEdit4.Text='')or
(form1.LabeledEdit1.Text='')or (form1.LabeledEdit2.Text='')then
begin
showmessage('Не выбраны используемые файлы или не введены ключи!'+#10#13
+' Процесс не быдет выполнен!');
exit;
end;
s3:=form1.LabeledEdit1.Text;
AssignFile(f1,form1.LabeledEdit1.Text);
AssignFile(f2,form1.LabeledEdit2.Text);
reset(f1);
rewrite(f2);
block:=length(form1.LabeledEdit3.Text)*length(form1.LabeledEdit4.Text);
while not eof(f1) do
begin
if (fileSize(s3)-filepos(f1))>=block then
size:=block
else
size:=(fileSize(s3)-filepos(f1));
blockread(f1,aa,size,q);
for i:=1 to length(form1.LabeledEdit3.Text) do
for j:=1 to length(form1.LabeledEdit4.Text)do
a[i]:=aa[i,j];
Sort(form1.LabeledEdit3.Text,s1);
Soot(form1.LabeledEdit3.Text,s1,mas1);
for i:=1 to length(form1.LabeledEdit3.Text) do
change1(aa,mas1[i,1],mas1[i,2],aa);
Sort(form1.LabeledEdit4.Text,s2);
Soot(form1.LabeledEdit4.Text,s2,mas2);
for j:=1 to length(form1.LabeledEdit4.Text) do
change2(aa,mas1[j,1],mas1[j,2],aa);
blockwrite(f2,a,size,q);
end;
closefile(f2);
CloseFile(f1);
showmessage('Шифрование завершено!');
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i,j,size,q,block:integer;
f1,f2:file of byte;
a:array[0..65524] of byte;
s1,s2,s3:string;
mas1,mas2:m1;
aa:m2;
begin
if (form1.LabeledEdit3.Text='')or (form1.LabeledEdit4.Text='')or
(form1.LabeledEdit1.Text='')or (form1.LabeledEdit2.Text='')then
begin
showmessage('Не выбраны используемые файлы или не введены ключи!'+#10#13
+' Процесс не быдет выполнен!');
exit;
end;
s3:=form1.LabeledEdit1.Text;
AssignFile(f1,form1.LabeledEdit1.Text);
AssignFile(f2,form1.LabeledEdit2.Text);
reset(f1);
rewrite(f2);
block:=length(form1.LabeledEdit3.Text)*length(form1.LabeledEdit4.Text);
while not eof(f1) do
begin
if (fileSize(s3)-filepos(f1))>=block then
size:=block
else
size:=(fileSize(s3)-filepos(f1));
blockread(f1,a,size,q);
for i:=1 to length(form1.LabeledEdit3.Text) do
for j:=1 to length(form1.LabeledEdit4.Text)do
aa[i,j]:=a[i];
Sort(form1.LabeledEdit4.Text,s2);
Soot(form1.LabeledEdit4.Text,s2,mas2);
for j:=1 to length(form1.LabeledEdit3.Text) do
change2(aa,mas1[j,1],mas1[j,2],aa);
Sort(form1.LabeledEdit3.Text,s1);
Soot(form1.LabeledEdit3.Text,s1,mas1);
for i:=1 to length(form1.LabeledEdit4.Text) do
change1(aa,mas1[i,2],mas1[i,1],aa);
blockwrite(f2,aa,size,q);
end;
closefile(f2);
CloseFile(f1);
showmessage('Дешифрование завершено!');
end;