Программа кодирования и декодирования текстового файла

1 Постановка задачи

Нужно написать программу кодирования и декодирования текстового файла,

переписывая его в другой файл.

2 Спецификация задачи

Название задачи

Название задачи:  Кодирование текстового файла.

Система программирования: Delphi 7.

Минимальные требования: Pentium III.

Описание

Пусть шифрование осуществляется методом простой одноалфавитной подстановки. Все символы исходного файла заменяются кодами, отличающимися от исходных символов на определенную величину, которая меняется от символа к символу. Для кодирования с помощью генератора случайных чисел создается кодировочная таблица, например, из 23 чисел (адресат знает о числе 23). Эта таблица представляет собой алфавит кодирования. Текст разбивается на группы символов, включая #13 #10, и каждый символ изменяется в соответствии с кодировочной таблицей, т.е. код первого символа увеличивается на первое число из таблицы, код второго – на второе число из таблицы и т.д. Для осуществления дешифровки кодировочную таблицу также необходимо записать в итоговый файл.

Управление режимами работы

Управление программой будет осуществляться в виде меню. В верхней части экрана программы расположен ряд кнопок меню, таких как Исходный файл, в котором содержится подменю: Новый файл, Добавить, Прочитать. Следующий пункт меню Кодирование в котором содержится подменю: Таблица кодировки, Кодирование файла. Следом за пунктом Кодирования идет пункт Проверка и за ним Выход. (Таблица 2.1)

Исходный файл Кодирование Проверка Выход
Новый файл Таблица кодировки
Добавить Кодирование файла
Прочитать

Входные данные

Вводимые данные ограничиваются текстовым файлом, который выбирает пользователь.

Выходные данные

Выходными данными являются кодированный текстовый файл на экране и текстовом файле сохраняющимся на диске ПК.

Сам исходик

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Buttons, StdActns, ActnList, XPMan;
type
TForm1 = class (TForm)
Memo1: TMemo;
Memo2: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
ActionList1: TActionList;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
EditDelete1: TEditDelete;
N6: TMenuItem;
Copy1: TMenuItem;
Cut1: TMenuItem;
Paste1: TMenuItem;
SelectAll1: TMenuItem;
Undo1: TMenuItem;
Delete1: TMenuItem;
XPManifest1: TXPManifest;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure BitBtn1Click (Sender: TObject);
procedure BitBtn2Click (Sender: TObject);
procedure N2Click (Sender: TObject);
procedure N3Click (Sender: TObject);
procedure N5Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
StartKey = 981;   {Start default key}
MultKey = 12674; {Mult default key}
AddKey = 35891; {Add default key}
function Encrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;
function Decrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;
implementation
{$R *.dfm}
{$R-}
{$Q-}
{*******************************************************
* Standard Encryption algorithm — Copied from Borland *
*******************************************************}
function Encrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;
var
I : Byte;
begin
Result := '';
for I := 1 to Length (InString) do
begin
Result := Result + CHAR (Byte (InString[I]) xor (StartKey shr 8));
StartKey := (Byte (Result[I]) + StartKey) * MultKey + AddKey;
end;
end;
{*******************************************************
* Standard Decryption algorithm — Copied from Borland *
*******************************************************}
function Decrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;
var
I : Byte;
begin
Result := '';
for I := 1 to Length (InString) do
begin
Result := Result + CHAR (Byte (InString[I]) xor (StartKey shr 8));
StartKey := (Byte (InString[I]) + StartKey) * MultKey + AddKey;
end;
end;
{$R+}
{$Q+}
procedure TForm1.Button1Click (Sender: TObject);
begin
Memo2.Text:=Encrypt (Memo1.Text,StartKey,MultKey,AddKey);
end;
procedure TForm1.Button2Click (Sender: TObject);
begin
Memo1.Text:=Decrypt (Memo2.Text,StartKey,MultKey,AddKey);
end;
procedure TForm1.BitBtn1Click (Sender: TObject);
begin
Memo2.Text:=Encrypt (Memo1.Text,StartKey,MultKey,AddKey);
Memo2.Lines.SaveToFile ('Outfil.dat');
end;
procedure TForm1.BitBtn2Click (Sender: TObject);
begin
Memo1.Text:=Decrypt (Memo2.Text,StartKey,MultKey,AddKey);
end;
procedure TForm1.N2Click (Sender: TObject);
begin
Memo1.Lines.SaveToFile ('Inpfil.txt');
BitBtn1.Enabled:=true;
BitBtn2.Enabled:=true;
end;
procedure TForm1.N3Click (Sender: TObject);
begin
Memo1.Lines.LoadFromFile ('Inpfil.txt');
BitBtn1.Enabled:=true;
BitBtn2.Enabled:=true;
end;
procedure TForm1.N5Click (Sender: TObject);
begin
Close;
end;
end.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, Buttons, StdActns, ActnList, XPMan;

type

TForm1 = class (TForm)

Memo1: TMemo;

Memo2: TMemo;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

ActionList1: TActionList;

EditCut1: TEditCut;

EditCopy1: TEditCopy;

EditPaste1: TEditPaste;

EditSelectAll1: TEditSelectAll;

EditUndo1: TEditUndo;

EditDelete1: TEditDelete;

N6: TMenuItem;

Copy1: TMenuItem;

Cut1: TMenuItem;

Paste1: TMenuItem;

SelectAll1: TMenuItem;

Undo1: TMenuItem;

Delete1: TMenuItem;

XPManifest1: TXPManifest;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N5Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

const

StartKey = 981;   {Start default key}

MultKey = 12674; {Mult default key}

AddKey = 35891; {Add default key}

function Encrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;

function Decrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;

implementation

{$R *.dfm}

{$R-}

{$Q-}

{*******************************************************

* Standard Encryption algorithm — Copied from Borland *

*******************************************************}

function Encrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;

var

I : Byte;

begin

Result := '';

for I := 1 to Length (InString) do

begin

Result := Result + CHAR (Byte (InString[I]) xor (StartKey shr 8));

StartKey := (Byte (Result[I]) + StartKey) * MultKey + AddKey;

end;

end;

{*******************************************************

* Standard Decryption algorithm — Copied from Borland *

*******************************************************}

function Decrypt (const InString:string; StartKey,MultKey,AddKey:Integer): string;

var

I : Byte;

begin

Result := '';

for I := 1 to Length (InString) do

begin

Result := Result + CHAR (Byte (InString[I]) xor (StartKey shr 8));

StartKey := (Byte (InString[I]) + StartKey) * MultKey + AddKey;

end;

end;

{$R+}

{$Q+}

procedure TForm1.Button1Click (Sender: TObject);

begin

Memo2.Text:=Encrypt (Memo1.Text,StartKey,MultKey,AddKey);

end;

procedure TForm1.Button2Click (Sender: TObject);

begin

Memo1.Text:=Decrypt (Memo2.Text,StartKey,MultKey,AddKey);

end;

procedure TForm1.BitBtn1Click (Sender: TObject);

begin

Memo2.Text:=Encrypt (Memo1.Text,StartKey,MultKey,AddKey);

Memo2.Lines.SaveToFile ('Outfil.dat');

end;

procedure TForm1.BitBtn2Click (Sender: TObject);

begin

Memo1.Text:=Decrypt (Memo2.Text,StartKey,MultKey,AddKey);

end;

procedure TForm1.N2Click (Sender: TObject);

begin

Memo1.Lines.SaveToFile ('Inpfil.txt');

BitBtn1.Enabled:=true;

BitBtn2.Enabled:=true;

end;

procedure TForm1.N3Click (Sender: TObject);

begin

Memo1.Lines.LoadFromFile ('Inpfil.txt');

BitBtn1.Enabled:=true;

BitBtn2.Enabled:=true;

end;

procedure TForm1.N5Click (Sender: TObject);

begin

Close;

end;

end.

About admin

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

Подтвердите, что Вы не бот — выберите самый большой кружок: