- •Факультет информационных технологий Кафедра электроники и вычислительной техники курсоВаЯ работа
- •Факультет информационных технологий
- •Кафедра электроники и вычислительной техники
- •ЗадаНие
- •На курсоВую РаБоТу
- •Тема курсовой работы
- •1.Задание
- •2.Таблица символьных имен
- •3.Блок-схема программы шифрования
- •4.Блок-схема программы дешифрования
- •5.Текст программы шифрования
- •6.Текст программы дешифрования
- •7.Исходный текст
- •8.Зашифрованный текст
- •9.Дешифрованный текст
1.Задание
Вариант №59
№ |
B1 |
B2 |
R |
P |
59 |
2 |
2 |
2 |
2 |
Согласно варианту работы, требования к работе являются такими:
-
В1=2 – текст ключа вводится пользователем как параметр командной строки при запуске программы.
-
В2=2 – текст ключа вводится пользователем программы дешифрования как параметр командной строки при запуске программы.
-
R=2 – все символы ключа преобразуются в заглавные, а символы исходного текста в прописные.
-
При обратной подстановке (P=2) символы ключа располагаются в обратном порядке
2.Таблица символьных имен
Математическое имя |
Имя в программе |
Смысловое значение |
Переменная |
|
Тип |
Значение |
|||
in |
in |
Указатель на входной файл |
FILE |
Указатель |
out |
out |
Указатель на выходной файл |
FILE |
Указатель |
n |
n |
Длина ключа |
Целый |
Перем. |
j |
j |
Номер символа в ключе |
Целый |
Перем. |
i |
i |
Счетчик(начало, конец файла) |
Целый |
Перем. |
temp |
temp |
Символ исходного файла, зашифрованый символ |
Символьн. |
Входное |
key[1] |
key[1] |
Ключ |
Символьн. |
Входное |
3.Блок-схема программы шифрования
4.Блок-схема программы дешифрования
5.Текст программы шифрования
#include<iostream>
#include <tchar.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
void main(intargc, char **key){
FILE *in = fopen("in.txt", "rb");
FILE *out = fopen("out.txt", "wb");
if(!in){
cout<<"\nThere is no file for coding \"in.txt\".";
cout<<"\n\nPres any key for exit...";
system("pause");
exit(1);
}
int i,j,n = strlen(key[1]);
char temp;
for (i = 0; key[1][i]; i++){
if(key[1][i] >= -32 && key[1][i] <= -1) key[1][i] -= 32;
if(key[1][i] == -65 || key[1][i] == -72 || key[1][i] == -70) key[1][i] -= 16;
if(key[1][i] >=97 && key[1][i] <= 122) key[1][i] -= 32;
}
strrev(key[1]);
for(i = 0; ((temp = fgetc(in)) && !feof(in)); i++){
if(temp <= -33 && temp >= -64) temp += 32;
if(temp == -81 || temp == -88 || temp == -86) temp += 16;
if(temp <= 90 && temp >= 65) temp += 32;
j = fmod((float)i,(float)n);
temp = key[1][j]^temp;
fputc(temp,out);
}
fclose(in);
fclose(out);
cout<<"The text was coded and put to \"out.txt\""<<endl;
system("pause");
}
6.Текст программы дешифрования
#include <iostream>
#include <tchar.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
void main(intargc, char **key){
FILE *in = fopen("out.txt", "rb");
FILE *out = fopen("out_decoded.txt", "wb");
if(!in){
cout<<"\nThere is no file for coding \"in.txt\".";
cout<<"\n\nPres any key for exit...";
system("pause");
exit(1);
}
int i,j,n = strlen(key[1]);
char temp;
for (i = 0; key[1][i]; i++){
if(key[1][i] >= -32 && key[1][i] <= -1) key[1][i] -= 32;
if(key[1][i] == -65 || key[1][i] == -72 || key[1][i] == -70);
if(key[1][i] >=97 && key[1][i] <= 122) key[1][i] -= 32;
}
strrev(key[1]);
for(i = 0; ((temp = fgetc(in)) && !feof(in)); i++){
j = fmod((float)i,(float)n);
temp = key[1][j]^temp;
fputc(temp,out);
}
fclose(in);
fclose(out);
cout<<"The text was decoded and put to \"out_2.txt\""<<endl;
system("pause");
}