45951 (665256)
Текст из файла
Программа coDec
Задано число к и последовательность чисел от 1 до к 1......к. Необходимо
зашифровать литерную последовательность, находящуюся в файле в соответствии с
введенной последовательностью. Выходные данные записать в файл. Например, если к
равно 4 и последовательность S3,S2,S4,S1 то символы S1,S1,S3,S4 преобразуются в
S3,S2,S4,S1. Если количество символов не кратно к, то в конце последовательности
необходимо добавить пробелы.
2. Описание применения
2.1. Назначение программы
Программа coDec предназначена для шифрации и дешифрации символьного массива,
находящегося в файле.
2.2. Условия применения
Программа предъявляет очень скромные требования к ресурсам вычислительной
установки. Тем не менее, в случае необходимости использовать для компиляции и
сборки программы С на машинах типа PC необходимо иметь 8Мбайт оперативной
памяти. Программа в состоянии брать из любого каталога файлы и также записывать
файлы в произвольную директорию, указанную вами. Однако не следует пренебрегать
общими принципами шифрации и дешифрации информационных данных , то есть
воспринимать сей труд как панацею зашиты от посторонних лиц. Любая
закодированная порция данных может быть с легкостью преобразована в исходный
текст подбором ключа, путем перестановки литер для нахождения логичного
варианта.
Описание задачи
Задача, поставленная на практике, состояла в необходимости набора некоего числа
к и последовательности 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<=10&&k==ceil(k)) break;
while (getchar()!='\n') ;
printf ("\n Error!!! K must be integer from 1 to 10 ");
}
Раздел №5
/*Ввод перестановки*/
while (1)
{
printf ("\n Input %d elements \n",k);
for (Sum=0,Sum_contr=0,i=0; i { printf ("Element[%d]:",i+1); scanf ("%d", &Y[i]); Sum+=Y[i]; Sum_contr+=W[i]; /*Вычисление контрольной суммы*/ } if (Sum==Sum_contr) break; while (getchar()!='\n'); printf ("\n Error!!! Repeat input"); } /*Очистка входного потока*/ while (getchar()!='\n') ; Раздел №6 /* Ввод имени файла-источника */ puts ("\nInput name of file-sourche :"); gets (fname); /*Открытие файла-источника*/ while((fp=fopen(fname,"r"))==NULL) /*открытие файла для чтения*/ { puts("Error!!! Can't open file \nInput name of file-source\n"); gets (fname); } /* Ввод имени файла-приемника */ puts ("\nInput name of file for results:"); gets (fname2); /*Создание файла-приемника*/ if ((fp2=fopen(fname2,"w"))==NULL) /*открытие файла для записи*/ { perror(fname2); return 1; } Раздел №7 /*Шифрация и запись в файл-приемник*/ if (select==0) { while (1) { for (i=0;i { c=fgetc(fp); if (feof(fp)&&i==0) return 0; if (feof(fp)&&i>0) B[i+1]=' '; else B[i+1]=c; } for (i=0;i { pointer=Y[i]; putc(B[pointer],fp2); } if (feof(fp)) break; } } Раздел №8 /*Дешифрация и запись в файл-приемник*/ else { while (1) { for(i=0;i { c=getc(fp); pointer=Y[i]; B[pointer]=c; } if (feof(fp)) break; for (i=0;i putc(B[i+1],fp2); } } Раздел №9 /*Закрытие файла источника и приемника*/ fclose(fp); fclose(fp2); }
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















