MaxEdu.ru

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

Содержание………………………………………………………………....стр.2
Введение…………………………………………………………………….стр. 3
Постановка задачи………………………………………………………...стр. 3
Используемые методы…………………………………………………….стр. 3
Описание алгоритма программы………………………………………..стр. 3
Описание входных и выходных данных………………………………..стр. 8
Заключение…………………………………………………………………стр. 8
Список литературы………………………………………………………..стр. 9
Приложение 1. Листинг программы……………………………………стр. 10
Приложение 2. Результаты работы……………………………………..стр. 13
Введение.
Целью данного курсового проекта является закрепление полученных знаний по разработке алгоритмов на персональном компьютере в среде Турбо Паскаль.
В курсовом проекте рассматривается работа программы для шифровки и дешифровки текста.
Постановка задачи.
Необходимо написать программу, которая будет шифровать и дешифровать текст. При этом программа должна брать исходный текст из файла, а результат сохранять в другом файле. Также необходимо создать «дружественный» интерфейс, для упрощения работы с программой конечного пользователя.
Используемые методы.
В программе используется следующий алгоритм шифрования: с помощью команды ORD каждый символ текста будет преобразован в его числовой код, но при этом еще будет использоваться ключ. Ключ будет задаваться пользователем и может содержать набор букв, чисел и символов. Каждый символ ключя будет декодирован в числовое значение, и алгебраическая сумма всех этих чисел будет прибавлена к имеющемуся значению зашифрованного знака в тексте. И так - для каждой буквы шифруемого текста, между которыми добавятся пробелы, иначе декодер примет множество символов, записанных в цифровом виде, за одно большое многозначное число и ничего не переведет.
При декодировании текста числовые значения переведутся в символьные при помощи команды CHR, но не зная ключя дешифровать такой текст будет достаточно сложно.
Описание алгоритма программы.
Программа Crypter . В программе используются следующие функции и процедуры:
Функция Password (FUNCTION Password ( Psw : string ): integer ; ): преобразует каждый символ, введенного пользователем ключя, в его числовой код и находит алгебраическую сумму этих чисел. В данной функции используются следующие переменные:
· строковая переменная Psw – при вызове функции ей передается ключ введенный пользователем с клавиатуры, именно это значение и присваивается данной переменной
· переменные i , res – целого типа служат для: переменная i необходима для работы цикла, а в переменную res будет записываться результат работы цикла.
Переменной res присваиваем значение равное 0. Для того, чтобы перевести каждый символ ключа в его числовой код создадим цикл размером от 1 до количества символов в ключе (данное значение мы получим при помощи команды length ( psw ) данная команда возвращает количество символов в строке). Затем в этом цикле с помощью команды ord ( psw [ i ]) найдем числовые коды всех символов ключа, сложим их и присваиваем полученное значение функции Password .
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;
Функция Crypt (FUNCTION Crypt(CryptStr: string): string; ): функциядляшифрованиятекста. При вызове данной функции ей передается текст который необходимо шифровать, этот текст присваивается переменной CryptStr . В данной функции созданы следующие внутренние переменные необходимые для ее работы:
· переменные s , s 1 – строкового типа. В переменную s 1 будет записываться результат работы. Переменная s будет содержать в себе значение первого символа строки CryptStr
· переменные i , rez – целого типа. Переменная i необходима для работы цикла. Переменная rez будет содержать числовое значение символа находящегося в s .
Переменной s 1 присваиваем пустое значение. Создаем цикл от 1 до количества символов в тексте содержащемся в переменной CryptStr (это значение мы получим выполнив команду length ( CryptStr ) ). Далее в цикле текст «разбирается» на символы и каждый символ командой ORD переводится в его числовой код при этом к полученному числу прибавляется алгебраическая сумма числовых кодов символов ключа (эта сумма возвращается при вызове функции Password ), полученное значение присваивается переменной rez . Затем полученные числовые значения переводятся в символьные командой STR и складываются, при этом между значениями вставляются пробелы (это необходимо для того, чтобы дешифратор по пробелам мог отделить числа, иначе он принял бы их за одно большое число).
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;
Функция Decrypt (FUNCTION Decrypt ( DecryptStr : string ): string ; ): функция для дешифровки текста. При вызове этой функции ей передается зашифрованный текст, который необходимо расшифровать, этот текст записывается в переменную DecryptStr . В данной функции созданы следующие внутренние переменные необходимые для ее работы:
· переменные Xpos , i , v , e – целого типа. Переменная Xpos будет содержать в себе позицию пробела. Переменная i необходима для работы цикла. Переменные v и e необходимы для работы с оператором VAL (данный оператор преобразует символ в число)
· переменные Code , s 1 – строкового типа. Переменная s 1 будет содержать результат работы. Переменная Code будет содержать значение первого числа извлеченного из переменной DecryptStr .
Создадим цикл размером от 1 до количества символов в переменной DecryptStr (это значение мы получим выполнив команду length ( DecryptStr ) ). Далее в цикле из полученного зашифрованного текста «выдергиваются» числа разделенные пробелами и переводятся в числовые значения при помощи команды VAL потом от них отнимается алгебраическая сумма числовых кодов символов ключа (эта сумма возвращается при вызове функции Password ), затем полученные значения преобразуются командой CHR в символьные и складываются. Полученный результат возвращается функцией Decrypt .
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 Menu – процедура, выводящая на экран основное меню программы. Меню организовано с помощью операторов writeln , readln и содержит следующие пункты:
1. Шифровать текст
2. Дешифровать текст
3. Выход
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;
При выборе первого пункта меню вызывается процедура шифрования текста (PROCEDURE CryptP; ). Данная процедура создает интерфейс для ввода имени файла, который необходимо зашифровать и ключа. После ввода имени файла и ключа данный файл открывается (при помощи команды Assign ) и весь текст из него записывается в переменную Line .Также создаем второй файл в который будет записан результат работы (этот файл будет иметь имя crypter.txt). Затем вызывается функция Crypt и ей передается значение переменной Line . После завершения работы функции зашифрованный текст сохраняется во вновь созданном файле. Закрываем оба открытых файла при помощи оператора Close .

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Курсовые работы по информатике Содержание………………………………………………………………....стр.2 Введение…………………………………………………………………….стр. 3 Постановка задачи………………………………………………………...стр. 3 Используемые
Оценок: 397 (Средняя 5 из 5)

Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.

Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.

© 2014 - 2022 MaxEdu.ru