- •Министерство образования и науки
- •Кафедра асоиу
- •Курсовая работа
- •Введение
- •Постановка задачи
- •Основные характеристики программы:
- •Теоритическая часть
- •Текст программы
- •Руководство программиста
- •Тестирование программы шифрования
- •Тестирование программы дешифрования
- •Результат шифрования и дешифрования
- •Заключение
Текст программы
#include "stdafx.h" /* Подключаем библиотеки (Стандартная библиотека Microsoft Visual Studio)*/
#include <windows.h> /* Подключаем библиотеки (Операции для использования функций WIndows API)*/
#include <fstream> /* Подключаем библиотеки (Операции с потоками)*/
#include <stdio.h> /* Подключаем библиотеки (Операции с файлами, опреации ввода-вывода)*/
#include <math.h> /* Подключаем библиотеки (Математические операции)*/
#include <string.h> /* Подключаем библиотеки (Операции с памятью)*/
#include <conio.h> /* Подключаем библиотеки (Операции с консольным вводом-выводом)*/
using namespace std;
extern int shifr(char*, char*, char*);
extern int deshifr(char*, char*, char*);
/* Главная функция*/
int main()
{
setlocale (LC_ALL, "Russian"); /*Работа с кирилицей*/
int mode; /*Объявления переменной*/
char file_output[20], file_input[20]; /*Объявляем символьные переменные*/
char password[10]; /*Объявляем символьные переменные*/
printf("Введите имя входного файла с расширением: ");
gets(file_input); /*Вводим имя входного файла*/
printf("Введите имя выходного файла с расширением: ");
gets(file_output); /*Вводим имя выходного файла*/
printf("Введите ключ: ");
gets(password); /*Вводим ключ*/
printf("Шифровать=0 Расшифровать=1: "); /*Выбираем операцию*/
scanf("%d", &mode);
if (mode==0)
{
if(shifr(file_input,file_output,password)==0) printf("\nОшибка. Файл не был создан.\n"); /*Используем функцию шифрования*/
}
if (mode==1)
{
if(deshifr(file_input,file_output,password)==0) printf("\nОшибка. Файл не бы создан.\n"); /*Используем функцию дешифрирования*/
}
getch();
return 0;
}
/*Шифрование (Модуль)*/
int shifr(char *file_input, char *file_output, char *password) /*На вход подаётся имя оригинального файла и файла, в который запишется шифр, а также ключ*/
{
FILE *fin, *fout; /*Объявляем файлы*/
int symbol, i=0; /*Объявляем переменную*/
fin=fopen(file_input, "rb"); /*Указываем режим доступа*/
fout=fopen(file_output, "wb"); /*Указываем режим доступа*/
if ((fin==0) || (fout==0)) return 0; /*Проверка на создание файла*/
while(1)
{
fscanf(fin,"%c",&symbol);
if(feof(fin)!=0) break;
symbol^=password[i]; /*Преобразование символа методом XOR, с учетом строк*/
symbol=symbol+strlen(password); /*Преобразование методом СДВИГ, с учетом строк*/
fprintf(fout,"%c",symbol); /*Печатаем в файл*/
i++;
if(i==strlen(password)) i=0; /*Проверяем на длину пароля*/
}
fclose(fin); /*Закрываем входной файл*/
fclose(fout); /*Закрываем выходной файл*/
return(1); /*Если все успешно, то вернем 0*/
}
/*Дешифрование (Модуль)*/
int deshifr(char *file_input, char *file_output, char *password) /*На вход подаётся имя зашифрованного файла и файла, в который запишется расшифрованный файл, а также ключ*/
{
FILE *fin, *fout; /*Объявляем файлы*/
int symbol, i=0; /*Объявляем переменную*/
fin=fopen(file_input, "rb"); /*Указываем режим доступа*/
fout=fopen(file_output, "wb"); /*Указываем режим доступа*/
while(1)
{
fscanf(fin,"%c",&symbol);
if(feof(fin)!=0) break;
symbol=symbol-strlen(password); /*Обратные преобразования символа методом СДВИГ, с учетом строк*/
symbol^=password[i]; /*Обратные Преобразования символа методом XOR, с учетом строк*/
fprintf(fout,"%c",symbol); /*Печатаем в файл*/
i++;
if(i==strlen(password)) i=0; /*Проверяем на длину пароля*/
}
fclose(fin); /*Закрываем входной файл*/
fclose(fout); /*Закрываем выходной файл*/
return(1); /*если все успешно, то вернем 0*/
}
/*КОНЕЦ*/