Форум: "Основная";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
ВнизНе удаётся нормально зашифровать-дешифровать сообщение... Найти похожие ветки
← →
VoznikVopros (2009-03-30 18:47) [0]Пытаюсь зашифровать и дешифровать сообщение с помощью шифра сложной замены (симметричная криптосистема).
В результате дешифрованный текст оказывается неправильным... Где закрался подвох в программе? =)
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.
← →
KilkennyCat © (2009-03-30 23:20) [1]X:=(Y - K) mod m;
y = 31
k = 25
m = 256
x = ?
← →
Германн © (2009-03-31 00:45) [2]
> VoznikVopros (30.03.09 18:47)
>
> Пытаюсь зашифровать и дешифровать сообщение с помощью шифра
> сложной замены (симметричная криптосистема).
> В результате дешифрованный текст оказывается неправильным.
> .. Где закрался подвох в программе? =)
>
> Memo1 - Исходный файл text.txt
> Memo2 - Файл ключа seed.txt
> Memo3 - Кодированный текст ctext.txt
> Memo4 - Расшифрованный текст: newtext.txt
>
И какой диверсант (агент ЦРУ, Ми-5, Моссада ?) тебя научил помещать шифровки в TMemo?
И кто тебя учил Паскалю и Делфи?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c