Рефераты. Шифровка и дешифровка текста

     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;

 При выборе первого пункта меню вызывается процедура шифрования текста (PROCEDURE CryptP;). Данная процедура создает интерфейс для ввода имени файла, который необходимо зашифровать и ключа. После ввода имени файла  и ключа данный файл открывается (при помощи команды Assign) и весь текст из него записывается в переменную Line.Также создаем второй файл в который будет записан результат работы (этот файл будет иметь имя crypter.txt). Затем вызывается функция Crypt и ей передается значение переменной Line. После завершения работы функции зашифрованный текст сохраняется во вновь созданном файле. Закрываем оба открытых файла при помощи оператора Close.


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;). Работа этой процедуры аналогична работе процедуры CryptP, за одним лишь исключением, мы вызываем функцию Decrypt вместо функции Crypt.


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:\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:\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_». Это говорит о корректной работе программы.

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


Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.