Смекни!
smekni.com

Шифровка и дешифровка текста (стр. 2 из 2)

PROCEDURE DecryptP;

BEGIN

writeln;

write('Введитепутьиимяфайла: ');

readln(FileName);

write('Введитеключ: ');

readln(PassW);

Assign(F,FileName);

Assign(F1,'crypter.txt');

Rewrite(F1);

Reset(F);

while not EOF(F) do

begin

readln(F,Line);

line:=decrypt(line);

writeln(F1,Line);

end;

writeln;

writeln('Файл успешно расшифрован!!!');

Close(F);

Close(F1);

writeln;

write('Нажмите любую клавишу...');

ReadKey;

END;

При выборе третьего пункта меню программа завершает свою работу.

Описание входных и выходных данных.

При шифровании текста входными данными является файл, содержащий любой текст. А выходными данными будет файл, содержащий зашифрованный текст, который создается в папке в которой расположена данная программа, этот файл будет иметь имя «crypter.txt».

При дешифровке текста входными данными является файл, содержащий зашифрованный текст. А выходными данными будет файл, содержащий расшифрованный текст, который будет создан в папке в которой расположена данная программа, этот файл будет иметь имя «crypter.txt».

Заключение.

Данная программа продемонстрировала хорошую работоспособность. Имеет высокую степень защиты зашифрованного текста, без ключя такой текст расшифровать достаточно сложно, даже зная алгоритм шифрования. У данной программы есть один значительный недостаток – размер зашифрованного файла увеличивается по сравнению с исходным примерно в 3 раза.


Список литературы.

1. «Основы алгоритмизации и программирование», Е. Н. Сафьянова, учебное пособие, Томск, 2000 г.

Приложение 1. Листинг программы.

PROGRAM Crypter;

USES crt;

VAR f,f1: Text;

FileName,PassW,Line: string;

men: integer;

{Преобразуем пароль в числовое значение}

FUNCTION Password(Psw: string): integer;

VAR i,res: integer;

BEGIN

res:=0;

for i:=1 to length(psw) do res:=res+ord(psw[i]);

Password:=res;

END;

{Функция шифрования текста}

FUNCTION Crypt(CryptStr: string): string;

VAR s,s1: string;

i,rez: integer;

BEGIN

s1:='';

for i:=1 to length(CryptStr) do

begin

s:=CryptStr;

s:=copy(s,1,1);

CryptStr:=copy(CryptStr,2,length(CryptStr)-1);

rez:=ord(s[1])+Password(PassW);

str(rez,s);

s1:=s1+s+' ';

end;

delete(s1,length(s1),1);

Crypt:=s1;

END;

{Функция дешифровки текста}

FUNCTION Decrypt(DecryptStr: string): string;

VAR Xpos,i,v,e: integer;

Code,s1: string;

BEGIN

s1:='';

for i:=1 to length(DecryptStr) do

begin

xpos:=pos(' ',DecryptStr);

if xpos<=0 then

begin

val(DecryptStr,v,e);

s1:=s1+chr(v-password(PassW));

Decrypt:=s1;

exit;

end;

code:=copy(DecryptStr,1,xpos-1);

val(code,v,e);

s1:=s1+chr(v-password(PassW));

delete(DecryptStr,1,xpos);

end;

Decrypt:=s1;

END;

{Процедурашифрованиятекста}

PROCEDURE CryptP;

BEGIN

writeln;

write('Введитепутьиимяфайла: ');

readln(FileName);

write('Введитеключ: ');

readln(PassW);

Assign(F,FileName);

Assign(F1,'crypter.txt');

Rewrite(F1);

Reset(F);

while not EOF(F) do

begin

readln(F,Line);

line:=crypt(line);

writeln(F1,line);

end;

writeln;

writeln('Файл успешно зашифрован!!!');

Close(F);

Close(F1);

writeln;

write('Нажмите любую клавишу...');

ReadKey;

END;

{Процедура дешифровки текста}

PROCEDURE DecryptP;

BEGIN

writeln;

write('Введитепутьиимяфайла: ');

readln(FileName);

write('Введитеключ: ');

readln(PassW);

Assign(F,FileName);

Assign(F1,'crypter.txt');

Rewrite(F1);

Reset(F);

while not EOF(F) do

begin

readln(F,Line);

line:=decrypt(line);

writeln(F1,Line);

end;

writeln;

writeln('Файл успешно расшифрован!!!');

Close(F);

Close(F1);

writeln;

write('Нажмите любую клавишу...');

ReadKey;

END;

{Процедура вывода основного меню}

PROCEDURE Menu;

BEGIN

repeat

begin

ClrScr;

writeln('Программа шифровки и дешифровки текста!!!');

writeln;

writeln('1. Шифровать текст');

writeln('2. Дешифровать текст');

writeln('3. Выход');

writeln;

write('Выберите пункт меню: ');

readln(men);

case men of

1 : CryptP;

2 : DecryptP;

end;

end;

until men=3;

END;

BEGIN

ClrScr;

Menu;

END.

Приложение 2. Результаты работы.

При запуске программы на экран было выведено следующее:

Программа шифровки и дешифровки текста!!!

1.Шифровать текст

2.Дешифровать текст

3.Выход

Выберите пункт меню:

При выборе первого пункта меню, программа предложила ввести имя файла, который необходимо зашифровать и ключ. Имя файла было введено следующее «c:&bsol;a1.txt», а ключ «crypter». Файл содержал следующий текст: «Здравствуйте!!! Вас приветствует программа Crypter.». В результате шифрования в папке с программой появился файл «crypter.txt», который содержал следующее: «976 1005 1017 1001 1003 1018 1019 1003 1020 1010 1019 1006 810 810 810 971 1001 1018 809 1016 1017 1009 1003 1006 1019 1018 1019 1003 1020 1006 1019 809 1016 1017 1015 1004 1017 1001 1013 1013 1001 809 844 891 898 889 893 878 891 823».

При выборе второго пункта меню, программа предложила ввести имя файла, который необходимо расшифровать и ключ. Был введен файл «c:&bsol;a2.txt», а ключ «crypter». Файл содержал следующий текст: «976 1005 1017 1001 1003 1018 1019 1003 1020 1010 1019 1006 810 810 810 971 1001 1018 809 1016 1017 1009 1003 1006 1019 1018 1019 1003 1020 1006 1019 809 1016 1017 1015 1004 1017 1001 1013 1013 1001 809 844 891 898 889 893 878 891 823». В результате дешифровки в папке с программой появился файл «crypter.txt», который содержал следующее: «Здравствуйте!!! Вас приветствует программа Crypter.». Затем был выбран тот же файл, но ключ изменили на 1, в результате дешифровки получилась следующее: «џјИёєЙКєЛБКЅщщщљёЙшЗИАєЅКЙКєЛЅКшЗИЖ»ИёДДёш_JQHL=J_». Это говорит о корректной работе программы.

При выборе третьего пункта меню программа завершила свою работу.