Вы находитесь на странице: 1из 5

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования

«Тульский государственный университет»

Кафедра «Информационная безопасность»

Криптографические методы защиты информации

Лабораторная работа № 3

«Программная реализация алгоритмов замены»

Выполнили: студенты группы 230711 Проверил: преподаватель

Акользина И. С. Басалова Г. В.

Кузнецова А. В.

Тула 2013
1. Цель работы
Реализовать программно некоторые простейшие алгоритмы
шифрования заменой.

2. Ход работы
Вариант 2.

Задание. Разработать программы для шифрования и дешифрования с


применением шифра Цезаря. Необходимо использовать разные ключи для
разных символов входного файла.

Шифрование.
Алгоритм программы.
1. Открыть входной файл для чтения.
2. Открыть выходной файл для записи.
3. Ввести ключ с клавиатуры.
4. Для каждых n байтов входного файла (n – длина ключа):
5. Цикл i = 0 до i = n.
6. Зашифровать i – й байт из входного файла со сдвигом на keyi
вправо.
7. Вывести результат в выходной файл.

Текст программы.
// kript_lab_3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
using namespace std;

string str;
int x, y, n, a;
int* key;

int _tmain(int argc, _TCHAR* argv[])


{
FILE *file;
FILE *shifr;
char x1;
file=fopen("pr1.txt", "rb+");
shifr=fopen("shifr.txt", "rb+");

cout << "Vvedite dlinu klucha" << endl;


cin >> n;
key=new int[n];

cout << "Vvedite key" << endl;


for (int i=0; i<n; i++)
cin >> key[i];

long size;
fseek(file, 0, SEEK_END);
size=ftell(file);
fseek(file, 0, SEEK_SET);

a=0;
for (long i=0; i<size; i++)
{
if (a==n) a=0;
fread(&x1, sizeof(char),1,file);
x=int(x1);
y=(x+key[a])%256;

char y1=char(y);
fwrite(&y1, sizeof(char),1,shifr);
a++;
}

fclose(file);
fclose(shifr);

return 0;
}

Результат работы программы (для текстового файла).


Ключ: 1 2 3

Файл pr1.txt
абвгде

Файл shifr.txt
бгеджи

Расшифрование.
Алгоритм программы.
1. Открыть входной файл для чтения.
2. Открыть выходной файл для записи.
3. Ввести ключ с клавиатуры.
4. Для каждых n байтов входного файла (n – длина ключа):
5. Цикл i = 0 до i = n.
6. Расшифровать i – й байт из входного файла с помощью сдвига на
keyi влево.
7. Вывести результат в выходной файл.

Текст программы.
// kript_lab3_1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
using namespace std;

string str;
int x, y, n, a;
int* key;

int _tmain(int argc, _TCHAR* argv[])


{
FILE *file;
FILE *shifr;
char x1;
file=fopen("shifr.txt", "rb+");
shifr=fopen("pr1_1.txt", "rb+");

cout << "Vvedite dlinu klucha" << endl;


cin >> n;
key=new int[n];

cout << "Vvedite key" << endl;


for (int i=0; i<n; i++)
cin >> key[i];

long size;
fseek(file, 0, SEEK_END);
size=ftell(file);
fseek(file, 0, SEEK_SET);

a=0;
for (long i=0; i<size; i++)
{
if (a==n) a=0;
fread(&x1, sizeof(char),1,file);
x=int(x1);
y=(x-key[a])%256;

char y1=char(y);
fwrite(&y1, sizeof(char),1,shifr);
a++;
}

fclose(file);
fclose(shifr);

return 0;
}

Результат работы программы.


Ключ: 1 2 3

Файл shifr.txt
бгеджи

Файл pr1_1.txt
абвгде

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