Лабораторная работа №5 (Вариант 12)
.doc
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №5
по дисциплине
«Технология программирования»
на тему:
«Программирование алгоритмов кодирования информации»
|
Студент |
|
|
|
Ключанских А.С |
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
АС-10 |
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Принял |
|
|
|
|
|
||||||||
|
|
|
|
|
Домашнев П.А. |
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2011
-
Задание
Написать программу, осуществляющую кодирование и раскодирование последовательности из входного файла заданным методом и сохраняющую результат в выходной файл. Имена файлов вводит пользователь. Режим работы с файлам – двоичный. Для алгоритмов шифрования/дешифрования пользователь должен вводить также ключ.
Вариант 12
Алгоритм шифрования |
2 – метод Вижинера |
-
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
void main()
{
char inputName[256], outputName[256];
unsigned char key[256];
setlocale(LC_ALL, "Russian");
printf("Введите название входного файла:\n\r");
scanf("%s", inputName);
printf("Введите название выходного файла:\n\r");
scanf("%s", outputName);
printf("Введите ключ шифрования:\n\r");
scanf("%s", key);
FILE* inputFp = fopen(inputName, "rb");
FILE* outputFp = fopen(outputName, "wb");
if (inputFp == NULL || outputFp == NULL)
{
printf("Не удалось открыть файл");
getch();
return;
}
printf("1. Кодирование\n2. Раскодирование\n");
int ch,i=0;
do ch=getch();
while(ch!='1'&&ch!='2');
int keylen=strlen((char*)key);
if(ch=='1')
{
while((ch=fgetc(inputFp))!=EOF)
{
if(i==keylen)i=0;
fputc((ch+key[i++])%256,outputFp);
}
}
else
{
while((ch=fgetc(inputFp))!=EOF)
{
if(i==keylen)i=0;
fputc((ch+256-key[i++])%256,outputFp);
}
}
printf("Данные успешно внесены в файл %s", outputName);
getch();
}
-
Контрольный пример
-
Блок-схема