1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| //Programme qui encrypte/décrypte nimporte quel type de fichier à laide dune clé de 128 bits
//(en utilisant lopérateur OU EXCLUSIF binaire.)
#include "stdafx.h"
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
void main()
{
char tabCles[] = "s&kLh±8y.éA$md;O"; //La clé de 16 octets
int intNbCar=0; //Initialisation du nombre des caracteres contenu dans le text a encrypte/décrypte
string strNomFichier;
cout<<"Veuillez entrez le nom du fichier: ";
getline(cin,strNomFichier,'\n');
ifstream entree;
entree.open(strNomFichier.c_str(), ios::in|ios::binary);
if(!entree.is_open()){
//Fichier non ouvert
cout<<endl;
cout<<"Impossible d'ouvrir le fichier "<<strNomFichier<<" en lecture."<<endl;
cout<<"Veuillez verifier l'accessibilite de ce fichier et relancer l'application."<<endl;
cout<<endl;
}
else{
//Pour trouver le nombre de caracteres du fichier
entree.seekg (0, ios::end);
intNbCar = entree.tellg();
entree.seekg (0, ios::beg);
//Pour pouvoir avoir le contenu du fichier dans la variable: contenuFichier
char* contenuFichier;
contenuFichier = new char [intNbCar];
entree.read(contenuFichier, intNbCar);
for(int i=0; i<intNbCar; i++){
for(int j=0; j<16; j++){
contenuFichier[16*i+j]^=tabCles[j];
}
}
entree.close(); //Nous n'avons plus besoin du fichier en lecture
//Le contenu du fichier est mainteant dans la variable contenuFichier
ofstream sortie;
sortie.open(strNomFichier.c_str(), ios::out|ios::binary);
if(!sortie.is_open()){
//Fichier non ouvert
cout<<endl;
cout<<"Impossible d'ouvrir le fichier " <<strNomFichier<<" en ecriture."<<endl;
cout<<"Veuillez verifier l'accessibilite de ce fichier et relancer l'application."<<endl;
cout<<endl;
}
else{
sortie.write(contenuFichier, intNbCar);
sortie.close(); //Nous n'avons plus besoin du fichier en ecriture
}
delete[] contenuFichier;//Pour liberer la memoire
}
} |