Министерство образования РФ
Уральский государственный технический университет -УПИ
Кафедра "Технология и средства связи"
ОТЧЁТ по учебной практике
Преподаватель: Петров Р.А.
Студент: Черепанов К.А.
Группа: Р-207
Екатеринбург
2000
СОДЕРЖАНИЕ
1.Задание...............................................................
..........................................………...3
2.Описание применения........….....................................................
.................……….3
2.1. Назначение программы...............................................................
..........……….3
2.2. Условия применения.........…....................................................
..............………3
2.3. Описание задачи..................…...............................................
................……….3
3.Описание программы..................…............................................
.................………..4
3.1. Общие сведения................................................................
................….……….4
3.2. Функциональное назначение..…...........................................................
………4
3.3. Описание логической структуры...................................................…………..4
3.4. Используемые технические средства.....................................................….......5
3.5. Вызов и загрузка................................................................
....................………..5
3.6. Входные и выходные данные............….................................................………5
4. Текст программы......................................…........................
.......................………..6
1.Задание
Задано число к и последовательность чисел от 1 до к 1......к.
Необходимо зашифровать литерную последовательность, находящуюся в файле в
соответствии с введенной последовательностью. Выходные данные записать в
файл. Например, если к равно 4 и последовательность S3,S2,S4,S1 то символы
S1,S1,S3,S4 преобразуются в S3,S2,S4,S1. Если количество символов не кратно
к, то в конце последовательности необходимо добавить пробелы.
2. Описание применения
2.1. Назначение программы
Программа coDec предназначена для шифрации и дешифрации символьного массива, находящегося в файле.
2.2. Условия применения
Программа предъявляет очень скромные требования к ресурсам
вычислительной установки. Тем не менее, в случае необходимости использовать
для компиляции и сборки программы С на машинах типа PC необходимо иметь
8Мбайт оперативной памяти. Программа в состоянии брать из любого каталога
файлы и также записывать файлы в произвольную директорию, указанную вами.
Однако не следует пренебрегать общими принципами шифрации и дешифрации
информационных данных , то есть воспринимать сей труд как панацею зашиты от
посторонних лиц. Любая закодированная порция данных может быть с легкостью
преобразована в исходный текст подбором ключа, путем перестановки литер для
нахождения логичного варианта.
3. Описание задачи
Задача, поставленная на практике, состояла в необходимости набора некоего
числа к и последовательности 1.....к, и перегруппировке символьного массива
из одного файла в символьный массив другого файла, в соответствии с раннее
введенной последовательностью.
Кодирование достигается следующим образом: из символьного массива файла
источника последовательно берутся символы и записываются в новый символьный
массив В[ ] (B[i+1]=c), далее из этого массива происходит также
последовательно запись в файл, за исключением того, что индексы
записываемых символов равны последовательности (B[pointer], где pointer
равен массиву последовательности).
Декодирование: принцип работы декодирования противоположен кодированию и
состоит в том, что новому массиву В[ ] с индексами последовательности
присваиваются считываемые символы (B[pointer]=c), а затем производится
запись этого массива, но уже с индексами от 1 до к (B[i+1]).
3. Описание программы
3.1.Общие сведения
Программа coDec предназначена для шифрации и дешифрации символьного массива, находящегося в файле.
Для выполнения программы достаточно вычислительной установки типа PC
с процессором i386 и выше и 8 Мбайт оперативной памяти, оснащенной любой из
следующих операционных систем: MS DOS (начиная с версии 5.0), Windows 95,
Windows NT версий 4.0.
Программа coDec написана на языке Visual C++, реализованном, например, в компиляторе MS Developer Studio v.4.2 для операционных систем Windows NT и Windows 95.
3.2. Функциональное назначение
Программа применяется для шифрования или дешифрации данных из одного файла в другой. Однако не всякое сочетание исходных данных позволяет получить желаемый результат, например, не рекомендуется загружать *.exe и прочие файлы, имеющие в своей структуре помимо текстовых данных, спецсимволы, в некоторых случаях воспринимаемые программой как конец файла.
3.3. Описание логической структуры
Примечания вида "см. Текст", встречающиеся в этом разделе, означают ссылки на документ «Текст программы».
Описание головной программы
В Разделе 1 (см. Текст) производится подлключение стандартных библиотек компилятора для обеспечения функционирования отдельных операторов и всей программы в целом.
В Разделе 2 (см. Текст) осуществляется описание переменных.
В Разделе 3 (см. Текст) производится выбор дальнейшего действия программы: кодирования (0) или декодирования (1) литерной последовательности, содержащейся в исходном файле, в выходной файл.
Конструкция while (1) обеспечивает постоянное выполнение цикла до тех пор, пока не выполнится условие if, которое прерывает его действие оператором break.
В Разделе 4 находится цикл ввода длины кодовой
последовательности, который автоматически проверяет условие правильности
введенного значения.
Сообщение "Error!!! K must be integer from 1 to 10" означает, что введенный
вами символ не удовлетворяет требованиям и необходимо повторить ввод
заново.
В Разделе 5 организован цикл последовательности с проверкой вычисления
контрольной суммы, путем подсчета введенной суммы и суммы из массива W[ ] с
последующим сравнением обоих результатов. Если суммы не совпадают, цикл
повторяется снова, в противном случае выполняется последующий оператор.
Сообщение " Error!!! Repeat input" говорит о том, что последовательность
неправильна и необходимо повторить ввод заново.
Раздел 6 образован для ввода и открытия для чтения исходного файла, открытия и записи выходного файла. Литера «r» обозначает, что файл открывается для чтения, соответственно «w»-для записи. При открытии происходит автоматическая проверка существования в указанной директории файла. Если программа не в состоянии найти или открыть его выводиться сообщение об ошибке «Error!!! Can't open file» и снова запрашивается имя, если же ошибок не найдено выполняется следующее действие-запрос имени файла для результатов.
Раздел 7 предназначен для шифрации данных. Его организация устроена по
принципу, описанному в разделе 2.3. При этом, если в последней
последовательности не хватает n символов до к, программа автоматически
приписывает дополнительные пробелы. Конструкция if (feof(fp)&&i==0) return
0 - образована для исключения дополнительного цикла, который может
возникнуть, если количество символов в файле кратно к, в этом случае
выполняется лишний цикл, приводящий к добавлению дополнительных пробелов и,
следовательно, увеличению файлов. При достижении конца файла EOF шифрации
прекращается.
Раздел 8 Дешифрация и запись в файл-приемник-устроен практически по тому же принципу как и в разделе 7.Различия между операциями кодирования и декодирования приводятся в подразделе «Описание задачи». Дешифрация также прекращается при достижении конца файла.
Раздел 9 закрывает раннее открытые файлы.
3.4. Используемые технические средства
Для выполнения программы достаточно компьютера типа IBM PC с
процессором i386 и выше и 8 Мбайт оперативной памяти, оснащенной любой из
следующих операционных систем: MS DOS (начиная с версии 5.0), Windows 95,
Windows NT версий 4.0.
3.5. Вызов и загрузка
Запуск программы происходит путем запуска файла coDec. exe
3.6 Входные и выходные данные
Файлы-источники при кодировке по возможности должны быть с расширением txt, в то время как файл-приемник может иметь любое. Вызвано это причинами, описанными ранее в пункте 3.2. При декодировке ограничений нет.
4. Текст программы
// Шифратор-дешифратор
Раздел №1
# include
# include
# include
# include
# include
# include
int main ()
{ Раздел
№2
FILE *fp,*fp2; / *указатели на поток*/ int i,k,Sum,Sum_contr,pointer,select; int W[]={1,2,3,4,5,6,7,8,9,10}; /*массив проверки*/ int Y[10]; /*массив для кодовой перестановки*/ char B[11]; /*массив для перестановленных символов*/ char c; /*переменная для хранения символа*/ char fname[20], fname2[20]; /*массивы для имен файлов*/
/* О с н о в н о е т е л о п р о г р а м м ы */
Раздел №3
/*Выбор кодирования-декодирования*/ while (1)
{ printf ("nChoose coder(0) or decoder (1) "); scanf("%d",&select); if ((select==0)||(select==1)) break; while (getchar()!='n');
}
Раздел №4
/*Ввод длины кодовой последовательности*/ while (1)
{ printf ("nInput length of code k(1 to 10) "); scanf ("%d", &k);/* ввод десятичного целого*/ if (k>=1&&k