Содержание………………………………………………………………....стр.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 .
Курсовые работы по информатикеСодержание………………………………………………………………....стр.2 Введение…………………………………………………………………….стр. 3 Постановка задачи………………………………………………………...стр. 3 Используемые
Оценок: 397 (Средняя 5 из 5)
Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.
Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.