Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Задан текстовый файл. Зашифруйте его байтовым ключом по операции "сложение по модулю два".
- В первый байт зашифрованного файла записать ключ шифрования. Расшифровать этот файл.*/
- #include <stdio.h>
- #include <stdlib.h>
- void Code(FILE *in,FILE *out, char key) //функция кодирования
- {
- char z;
- fputc(key,out); //записывает символ и смещает указатель
- z=fgetc(in); //читает символ, увеличивает указатель
- while(!feof(in)) //пока не конец файла
- {
- z=z^key;
- fputc(z,out);
- z=fgetc(in);
- }
- }
- void Decode(FILE *in,FILE *out) //функция декодирования
- {
- char z,key=fgetc(in);
- z=fgetc(in);
- while(!feof(in)) //идем пока не конец файла
- {
- z=z^key;
- fputc(z,out);
- z=fgetc(in);
- }
- }
- FILE* fopen_secure(const char fname[], const char mode[]) //функция безопасного открытия
- {
- FILE *f=fopen(fname, mode);
- if(f==NULL) //если fopen возвращает нулевой указатель, то выводит ошибку
- {
- fclose(f);
- printf("Cannot open file %s with mode %s\n", fname, mode);
- exit(0);
- }
- return f;
- }
- void main()
- {
- FILE *f1,*f2,*f3; //исходник,зашифрованный, расшифрованный
- char key;
- printf("Enter key: ");
- scanf("%с",&key);
- f1=fopen_secure("f1.txt","r"); //открывается сущ. файл для чтения
- f2=fopen_secure("f2.txt","w+"); //создается новый файл для чтения и записи
- f3=fopen_secure("f3.txt","w"); //открывается новый файл для записи, если файл с таким именем был, то его содержимое теряется
- Code(f1,f2,key);
- fseek(f2,0,SEEK_SET); //смещаемся в начало файла; файл, смещение, начало отсчета
- Decode(f2,f3);
- fcloseall();
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement