![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не удаётся нормально зашифровать-дешифровать сообщение... [D6, D7, WinXP]
VoznikVopros © (2009-03-30 18:47:00)Пытаюсь зашифровать и дешифровать сообщение с помощью шифра сложной замены (симметричная криптосистема).
В результате дешифрованный текст оказывается неправильным... Где закрался подвох в программе? =)
Memo1 - Исходный файл text.txt
Memo2 - Файл ключа seed.txt
Memo3 - Кодированный текст ctext.txt
Memo4 - Расшифрованный текст: newtext.txt
Вот код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Button1: TButton;
Button2: TButton;
procedure GetNewSeed(N,m:Integer;FSeed:String);
procedure Code(FileName,Seed,FNameToSaveCodedText:String;m:Integer);
procedure Decode(FileName,Seed,FNameToSaveDecodedText:String;m:Integer);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Code(FileName, Seed, FNameToSaveCodedText: String;
m: Integer);
var
FPrimery, FCodedText,FCode:File of char;
X,Y,K:char;
i,j:Integer;
begin
AssignFile(FPrimery,FileName);
AssignFile(FCode,Seed);
AssignFile(FCodedText,FNameToSaveCodedText);
reset(FPrimery);
GetNewSeed(filesize(FPrimery),m,Seed);
reset(FCode);
rewrite(FCodedText);
while not EOF(FPrimery) do
begin
read(FPrimery,X);
read(FCode,K);
Y:=chr((ord(X)-ord(K)) mod m);
write(FCodedText,Y);
end;
CloseFile(FPrimery);
CloseFile(FCode);
CloseFile(FCodedText);
Memo3.Lines.LoadFromFile('ctext.txt');
end;
procedure TForm1.Decode(FileName, Seed, FNameToSaveDecodedText: String;
m: Integer);
var
FCodedText,FCode,FDecodedText:file of char;
X,Y,K:char;
begin
AssignFile(FCodedText,FileName);
AssignFile(FCode,Seed);
AssignFile(FDecodedText,FNameToSaveDecodedText);
rewrite(FdecodedText);
reset(FCode);
reset(FCodedText);
while not EOF(FCodedText) do
begin
read(FCodedText,Y);
read(FCode,K);
X:=chr((ord(Y)-ord(K)) mod m);
write(FDecodedText,X);
end;
CloseFile(FDecodedText);
CloseFile(FCode);
CloseFile(FCodedText);
Memo4.Lines.LoadFromFile('newtext.txt');
end;
procedure TForm1.GetNewSeed(N, m: Integer; FSeed: String);
var
F:file of byte;
i:Integer;
Ki:byte;
K:String;
begin
AssignFile(F,FSeed);
rewrite(F);
Randomize;
for i:=1 to N do
begin
Ki:=Random(m);
write(F,Ki);
end;
CloseFile(F);
Memo2.Lines.LoadFromFile('seed.txt');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('text.txt');
Memo4.Lines.Clear;
Code('text.txt','seed.txt','ctext.txt',256);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Decode('ctext.txt','seed.txt','newtext.txt',256);
end;
end.
Германн (2009-03-31 00:45:00) [1]
> VoznikVopros (30.03.09 18:47)
>
> Пытаюсь зашифровать и дешифровать сообщение с помощью шифра
> сложной замены (симметричная криптосистема).
> В результате дешифрованный текст оказывается неправильным.
> .. Где закрался подвох в программе? =)
>
> Memo1 - Исходный файл text.txt
> Memo2 - Файл ключа seed.txt
> Memo3 - Кодированный текст ctext.txt
> Memo4 - Расшифрованный текст: newtext.txt
>
И какой диверсант (агент ЦРУ, Ми-5, Моссада ?) тебя научил помещать шифровки в TMemo?
И кто тебя учил Паскалю и Делфи?
KilkennyCat (2009-03-30 23:20:00) [2]X:=(Y - K) mod m;
y = 31
k = 25
m = 256
x = ?