Шифрование/дешифрование файлов методом сложения с ключом (ключ задается пользователем)

Проектирование пользовательского интерфейса программы, осуществляющей шифрование и дешифрование файлов. Выбор формата представления данных. Список процедур, макросов и их назначение. Описание используемых в программе функций, ее тестирование и отладка.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.05.2013
Размер файла 29,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

московский энергетический институт

(технический университет)

Курсовая работа

по дисциплине «Системное программное обеспечение»

Шифрование/дешифрование файлов методом сложения с ключом (ключ задается пользователем)

Студент: Махов Роман

Группа: А-8-07

Москва 2010

Оглавление

Введение

1. Анализ задания

2. Проектирование пользовательского интерфейса

3. Выбор формата представления данных

4. Список процедур, макросов и их назначение

5. Используемые в программе функции

6. Тестирование и отладка программы

Заключение

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

Приложение

Введение

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

1. Анализ задания

Для реализации поставленного задания необходимо:

a) Ввести путь к файлу, который c которым будем дальше работать.

Ввод будет осуществляться в буфер. Для этого нам понадобится функция 0aH. Данная функция заносит вводимые символы в структуру определенного формата. В первом байте указана максимально возможная длинна строки, во втором действительная длинна вводимой строки, далее текст вводимый с клавиатуры, заканчивающийся символом CR (ASCII 0dH). Функция очень удобна и позволяет редактировать вводимые файлы до тех пор, пока не будет нажат ENTER. Таким же образом реализован и ввод ключа для кодирования.

b) Открыть файл.

В данном проекте операции над файлами будут реализованы через файловые индексы. Следовательно, нам необходимо подобрать необходимые для этого функции. Для открытия файла будет использована функция 3dH работающая по прерыванию INT 21. При открытии будет выбран режим «чтение-запись». Путь к файлу должен быть в формате ASCIZ-строки. Так же при открытии файла, мы должны предусмотреть тот случай, когда указанный файл не найден или не существует.

c) Создание файла, в котором будут формироваться выходные данные.

Необходимо создать файл выбранного пользователем разрешения. После создания нужно запомнить файловый индекс, для дальнейшей работы с созданным файлом. Это будет реализовано с помощью функции H работающей по прерыванию INT 21. Если указать имя уже существующего файла, то при открытии файл усекается до нулевой длинны. Путь к файлу должен быть в формате ASCIZ-строки.

d) Чтение и запись данных.

Итак, входной и выходной файлы открыты, необходимо выбрать функции с помощью которых будут реализованы чтение и запись данных - 3fH и 40H соответственно. По структуре эти функции схожи.

Файл для чтения или записи выбирается файловым индексом. В обоих случаях функции будут возвращать в CX число считанных(записанных байт). В ВХ необходимо указать адрес буфера куда будут считываться или откуда будут писаться данные.

e) Завершение работы программы.

После выполнения кодирования (декодирования) программа должна закрыть использовавшиеся файлы и вернуться в DOS. Для этого будет реализована процедура EXIT, в которой закрытие файлов будет выполнено с помощью функции 3eH (BX содержит файловый индекс (handle), возвращенный при открытии. Файл, представленный этим индексом, закрывается, его буфера сбрасываются, и оглавление обновляется корректными размером, временем и датой.). Возвращение в DOS реализовано стандартной функцией завершения программы - 4cH.

2. Проектирование пользовательского интерфейса

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

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

3. Выбор формата представления данных

Для определения переменных в моей программе используются метки типа byte (db) и word (dw).

Все строковые сообщения определяются как byte, т.к. только с помощью директивы db можно определить строку, состоящую из нескольких символов. В таблице 1 перечислены все переменные, использующиеся в программе.

Таблица 1. Список переменных.

Имя

Метка

Примечание

requst_in_file

db

Сообщение. Приглашение к вводу вх. файла

requst_out_file

db

Сообщение. Приглашение к вводу вых. файла

requst_key

db

Сообщение. Приглашение к вводу ключа

err_in_file_m

db

Сообщение. Ошибка открытия вх. файла

err_out_file_m

db

Сообщение. Ошибка открытия вых. файла

err_key_m

db

Сообщение. Ошибка при вводе ключа

mess_done

db

Сообщение. Оповещение о выполнении

new_str

db

Символы перевода каретки на новую строку.

buff

db

Переменная для хранения считываемых данных.

handle_in

dw

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

handle_out

dw

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

key_len

dw

Переменная для хранения значения количества символов ключа

count

dw

Переменная для хранения значения количества считанных байт.

4. Список процедур, макросов и их назначение

В таблице 2 указан список процедур, макросов и их назначение.

Таблица 2. Список процедур, макросов и их назначение.

INITSRD

Макрос производит инициализацию регистров DS и ES.

input_kbd

Макрос служит для вывода на экран приглашения для ввода данных с клавиатуры.

read

Макрос служит для выполнения чтения из файла.

write

Макрос служит для выполнения записи в файл.

init

Макрос служит для инициализации регистров.

err_key

Процедура выводящая сообщение об ошибке.

err_in_file

Процедура выводящая сообщение об ошибке.

err_out_file

Процедура выводящая сообщение об ошибке.

coding(decoding)

Процедура выполняющая кодирование, (декодирование) по методу сложения с ключем.

exit

Процедура закрывающая открытые файлы и передающая управление в Dos.

5. Используемые в программе функции

интерфейс шифрование файл макрос

Для вывода строки на экран используется:

Функция 09H прерывания INT 21H

Вход

· AH = 09H

· DS:DX = адрес строки, заканчивающейся символом '$' (ASCII 24H)

Выход

· нет

Для ввода строки в буфер:

Функция 0ah прерывания 21h.

Вход

· AH = 0aH

· DS:DX = адрес входного буфера (смотри ниже)

Выход

· нет = буфер содержит ввод, заканчивающийся символом CR (ASCII 0dH)

Для открытия файла:

Функция 3dH прерывания INT 21H

Вход

· AH = 3dH

· DS:DX = адрес строки ASCIIZ с именем файла

· AL = режим открытия

Выход

· AX = код ошибки если CF установлен и файловый индекс если нет ошибки.

Описание:

DS:DX указывает на строку ASCIIZ в формате: "d:\путь\имяфайла",0. Если диск и/или путь опущены, они принимаются по умолчанию.

· файл должен существовать.

· файл открывается в выбранном режиме доступа / режиме открытия:

o AL = 0 чтобы открыть для чтения

o AL = 1 чтобы открыть для записи

o AL = 2 чтобы открыть для чтения и записи

Для создания файла:

Функция 3сН прерывания INT 21Н

Вход

· AH = 3cH

· DS:DX = адрес строки ASCIIZ с именем файла

· CX = атрибут файла

Выход

· AX = код ошибки если CF установлен и файловый индекс если ошибки нет

Описание:

DS:DX указывает на строку ASCIIZ в формате: "d:\путь\имяфайла",0. если диск и/или путь опущены, они принимаются по умолчанию.

· файл создается в указанном (или умалчиваемом) оглавлении

· файл открывается в режиме доступа чтение/запись

· вы должны сохранить файловый индекс (handle) для последующих операций

· если файл уже существует:

· при открытии файл усекается до нулевой длины

· если атрибут файла - только чтение, открытие

Для чтения данных из файла:

Функция 3FН прерывания INT 21Н

Вход

· AH = 3fH

· BX = файловый индекс

· DS:DX = адрес буфера для чтения данных

· CX = число считываемых байт

Выход

· AX = код ошибки если CF установлен или число действительно прочитанных байт

Описание:

CX байт данных считываются из файла с файловым индексом, указанным в BX. данные читаются с текущей позиции указателя чтения/записи файла и помещаются в буфер вызывающей программы, адресуемый через DS:DX.

Для записи в файл:

Функция 40Н прерывания INT 21Н

Вход

· AH = 40H

· BX = файловый индекс

· DS:DX = адрес буфера, содержащего записываемые данные

· CX = число записываемых байт

Выход

· AX = код ошибки если CF установлен

· AL = число реально считанных байт (лучший тест для ошибок)

Описание:

CX байт данных записывается в файл с файловым индексом, заданным в BX. данные берутся из буфера, адресуемого через DS:DX. данные записываются, начиная с текущей позиции указателя чтения/записи файла.

Для закрытия файла:

Функция 3Eh прерывания INT 21h

Вход

· AH = 3eH

· BX = файловый индекс

Выход

· AX = код ошибки если CF установлен

Описание:

BX содержит файловый индекс (handle), возвращенный при открытии. файл, представленный этим индексом, закрывается, его буфера сбрасываются, и оглавление обновляется корректными размером, временем и датой.

6. Тестирование и отладка программы

Тестирование на ошибочный ввод параметров.

a) Попытаемся указать путь к несуществующему файлу.

b) Не вводить ключ.

Тестирование правильной работы программы.

Для тестирования правильной работы программы были использованы файлы с различными параметрами, соответственно с разными размерами расширениями.

Результат:

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

Заключение

Программа работоспособна и соответствует предъявленным требованием.

Так как в программе использованы стандартные устройства ввода-вывода, впервые введенные в MS-DOS 2.0, то для работоспособности программы необходимо наличие на машине операционной системы не ниже чем MS-DOS 2.0.

Возможно дальнейшее усовершенствование данной программы в сторону быстродействия.

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

1. П. Абель Язык ассемблера для IBM PC и программирования - М.: ЭНТРОП, 2007. -447с.

2. Файл руководства по системным функциям - interrup.lst

3. Сведения о функциях работающих по прерыванию INT 21: http://www.codenet.ru/progr/dos/int_0026.php

Приложение

Листинг программы

.model small

.stack 100h

.data

Input_in_file LABEL BYTE ;Список параметров:

maxlen_in DB 20 ; Максимальная длина

actlen_in DB ? ; Реальная длина

namefld_in DB 20 DUP (' ') ; Введенные символы

Input_out_file LABEL BYTE ;Список параметров:

maxlen_out DB 20 ; Максимальная длина

actlen_out DB ? ; Реальная длина

namefld_out DB 20 DUP (' ') ; Введенные символы

Input_key LABEL BYTE ;Список параметров:

maxlen_key DB 20 ; Максимальная длина

actlen_key DB ? ; Реальная длина

namefld_key DB 20 DUP (' ') ; Введенные символы

;----------------------------------------------------------------------------

new_str db 10,13,'$'

requst_in_file db 'sourse file is :','$'

requst_out_file db 'out file is :','$'

requst_key db 'key is :','$'

err_in_file_m db 'error: cannot open sourse file','$'

err_out_file_m db 'error: cannot open out file','$'

err_key_m db 'error: key was not entered','$'

mess_done db 'done.','$'

buff db 256 DUP (0)

handle_in dw ?

handle_out dw ?

key_len dw ?

count dw ?

;----------------------------------------------------------------------------

.code

;Макрос ввода с клавиатуры

input_kbd macro request, label_kbd, namefld

mov ah,09h

lea dx,request ;запрос на ввод

int 21h

mov ah,09h

lea dx,new_str ;переход на новую строку

int 21h

mov ah,0ah

lea dx,label_kbd ;ввод данных с клавиатуры

int 21h

mov ah,09h

lea dx,new_str ;переход на новую строку

int 21h

xor bx,bx ;делаем введенную строку ASCIZ-строкой

mov bl,[label_kbd+1]

mov [namefld+bx],0

endm

;----------------------------------------------------------------------------

;макрос чтения из файла

read macro file_handle,byte_read

mov ah,3Fh

mov bx,file_handle ;файловый индекс

mov cx,byte_read ;число считываемых байт

lea dx,buff ;адрес буфера для чтения данных

int 21h

endm

;макрос записи в файл

write macro file_handle,byte_write

mov ah,40h

mov bx,file_handle ;файловый индекс

mov cx,byte_write ;число записываемых байт

lea dx,buff ;адрес буфера, содержащего записываемые данные

int 21h

endm

;макрос инициализации

init macro

mov ax,@data ;установка регистра ds на начало

mov ds,ax ;сегмента данных

endm

;----------------------------------------------------------------------------

;код

init ;макрос инициализации

;----------------------------------------------------------------------------

input_kbd requst_in_file, Input_in_file, namefld_in ;макрос ввода входного файла

input_kbd requst_out_file, Input_out_file, namefld_out ;макрос ввода выходного файла

input_kbd requst_key, Input_key, namefld_key ;макрос ввода ключа

;----------------------------------------------------------------------------

cmp actlen_key,0

jne err_no

call err_key

;----------------------------------------------------------------------------

err_no:

mov ah,3dh ;открытие исходного файла

mov al,02h ;режим чтения-записи

lea dx,namefld_in

int 21h

jnc in_file_rdy

call err_in_file

;----------------------------------------------------------------------------

in_file_rdy:

mov handle_in,ax ;запоминаем файловый индекс

mov ah,3ch ;создание выходного файла

mov cx,0 ;обычный файл

lea dx,namefld_out

int 21h

jnc out_file_rdy

call err_out_file

;----------------------------------------------------------------------------

out_file_rdy:

mov handle_out,ax ;запоминаем файловый индекс

xor bx,bx

mov bl,actlen_key

mov key_len,bx ;запоминаем длину ключа в key_len

;----------------------------------------------------------------------------

call coding

;----------------------------------------------------------------------------

call exit

;----------------------------------------------------------------------------

coding proc near

copy:

read handle_in,key_len ;читаем из входного файла

mov count,ax

cmp ax, 0

je copy_ret

lea si,buff

lea di,namefld_key

mov cx,count

add_key:

mov al,[di]

add [si],al ;cумируем данные с ключем

inc si

inc di

loop add_key

write handle_out,count ;записываем просуммированное в выходной файл

cmp ax,key_len

je copy

copy_ret:

ret

coding endp

;----------------------------------------------------------------------------

;----------------------------------------------------------------------------

;----------------------------------------------------------------------------

;в программе декодирующей закодированный файл, необходимо заменить

;процедуру coding на decoding. Описание процедуры decoding приведено ниже

decoding proc near

copy:

read handle_in,key_len ;читаем из входного файла

mov count,ax

cmp ax, 0

je copy_ret

lea si,buff

lea di,namefld_key

mov cx,count

add_key:

mov al,[di]

sub [si],al ;вычитаем ключ

inc si

inc di

loop add_key

write handle_out,count ;записываем просуммированное в выходной файл

cmp ax,key_len

je copy

copy_ret:

ret

decoding endp

;----------------------------------------------------------------------------

;----------------------------------------------------------------------------

;----------------------------------------------------------------------------

err_key proc near

mov ah,09h

lea dx,err_key_m ;error: key was not entered

int 21h

call exit

err_key endp

;----------------------------------------------------------------------------

err_in_file proc near

mov ah,09h

lea dx,err_in_file_m ;error: cannot open sourse file

int 21h

call exit

err_in_file endp

;----------------------------------------------------------------------------

err_out_file proc near

mov ah,09h

lea dx,err_out_file_m ;error: cannot open out file

int 21h

call exit

err_out_file endp

;----------------------------------------------------------------------------

exit proc near

mov ah,3eh ;закрываем входной файл

mov bx,handle_in

int 21h

mov ah,3eh ;закрываем выходной файл

mov bx,handle_out

int 21h

mov ah,09h

lea dx,new_str ;пропускаем строку

int 21h

mov ah,09h

lea dx,mess_done ;done.

int 21h

mov ax,4c00h ;завершение программы

int 21h

exit endp

end

Размещено на Allbest.ru


Подобные документы

  • Проектирование пользовательского интерфейса. Выбор формата представления данных, используемые переменные. Список процедур и макросов, их назначение. Используемые в программе функции. Тестирование и отладка правильной работы программы, схема листинга.

    курсовая работа [28,6 K], добавлен 17.05.2013

  • Проектирование структуры и архитектуры программного продукта. Реализация программы конвертера файлов баз данных. Описание пользовательского интерфейса. Выбор порядка конвертации dbf файлов. Создание и исполнение шаблонов. Расчет себестоимости продукта.

    дипломная работа [2,2 M], добавлен 21.06.2013

  • Поиск вредоносных программ по средствам программ антивирусных. Выбор формата представления данных. Интерфейс программы, ее тестирование и отладка. Список процедур, их назначение. Поиск как средство для облегчения, удобства, надежности работы на ПК.

    курсовая работа [22,4 K], добавлен 17.05.2013

  • Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Описание алгоритма RSA: шифрование и дешифрование. Возможные атаки, способы взлома, обоснование и практическая реализация RSA.

    курсовая работа [45,9 K], добавлен 24.12.2011

  • Разработка программы, позволяющей реализовать шифрование и дешифрование текстового файла методом замены и методом перестановки. Требования к функциональным характеристикам, надежности, составу и параметрам технических средств ПО. Интерфейс пользователя.

    курсовая работа [19,0 K], добавлен 30.04.2011

  • Формирование ключей для шифрования сообщения. Описание алгоритма RSA: шифрование и дешифрование. Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Сущность цифровой подписи.

    лабораторная работа [326,0 K], добавлен 04.11.2013

  • Основные инструменты и приемы для аутентификации клиента и шифрования информации. Шифрование и дешифрование методом одиночной и двойной перестановки, методом Кордано и Гронсфельда. Маловероятные сочетания букв и истинная последовательность столбцов.

    курсовая работа [50,3 K], добавлен 23.12.2010

  • Симметричные и асиметричные методы шифрования. Шифрование с помощью датчика псевдослучайных чисел. Алгоритм шифрования DES. Российский стандарт цифровой подписи. Описание шифрования исходного сообщения асимметричным методом с открытым ключом RSA.

    курсовая работа [101,1 K], добавлен 09.03.2009

  • Применение алгоритмов шифрования и дешифрования данных в компьютерной технике в системах сокрытия конфиденциальной и коммерческой информации от злонамеренного использования сторонними лицами. Классический пример - симметричные криптографические алгоритмы.

    дипломная работа [44,9 K], добавлен 08.07.2009

  • Формирование на экране меню для выбора функций. Элементы пользовательского интерфейса. Описание внутренних переменных, входных и выходных данных языка программирования Си. Выбор пользователем функции. Создание программы "Список коммерческих банков".

    курсовая работа [491,9 K], добавлен 17.03.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.