Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по курсовой работе.docx
Скачиваний:
4
Добавлен:
19.12.2018
Размер:
273.99 Кб
Скачать

Текст программы

#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*/

}

/*КОНЕЦ*/