Text: |
ФІО = Пінчук Олександр
Запитання:/*
шифратор-дешифратор з допомогою ключа (вводиться з клавіатури) і файлу ^(xor)
чи щось таке в усякому разі я так зрозумів
-> дописує лишній символ + можуть бути якісь помолки... але ідея правильна
*/
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <cstring>
#define n 1000
using namespace std;
int main(){
FILE *f1, *f2;
f1 = fopen("pin_xor.in","rb");
f2 = fopen("pin_xor.out","wb");
char c=0;// сюди будуть записуватись зчитані символи
unsigned long count=0; // лічильник
char mas[n]; // це масив символів (для ключа)
cout<<" Enter KEY (for XOR) : ";
cin>>&mas[0]; // вводимо ключ
cout<<" -> "<<(&mas[0])<<endl; // виводимо ключ
int len=strlen(&mas[0]); // довжина ключа
cout<<" ->"<<strlen(&mas[0])<<endl;
if ((f1) && (f2)){ // якщо нормально відкрили файли, то починаємо
int i=0;// ітератор
while ( !feof(f1) ) // поки не зчитаємо весь перший файл
{
fscanf(f1,"%c",&c); // читаємо
fprintf(f2,"%c",c^mas[i]); // пишемо з ксором
// cout<<int (c)<<" - "<<int (mas[i])<<" = "<<int (c^mas[i])<<endl;
i=(i+1)%len; // робимо ефект лічильника, щоб ітератор не залазив за межі
}
fclose(f1);
fclose(f2);
} else {cout<<" Error at file1 or file2"<<endl;}
system("PAUSE");
return 0;
}
====================================
|