Cryptage/decryptage de fichiers [version 2, tout compilateur]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 898 fois - Téléchargée 38 fois

Contenu du snippet

Ce programme crypte ou decrypte un fichier à l'aide d'un algorithme rudimentaire.

Source / Exemple :


#include <iostream>
#include <string>
#include <fstream>

using namespace std;

string crypte(string x,int plus) {
for(int i=0;i<(int)x.size();i++)
{
x[i]=x[i]+plus;
}
return(x);
}

string decrypte(string x,int moins) {
for(int i=0;i<(int)x.size();i++)
{
x[i]=x[i]-moins;
}
return(x);
}

int main()
{
int choix;
long cle;
char fichier[128],fichiercible[128];
string line,s,cs;

cout << "\033[2J" << "1. Cryptage\n2. Decryptage\n";
cin >> choix;
switch(choix)
  {
  case 1:
    {
cout << "\nEntrez la cle (uniquement des chiffres) : ";
cin >> cle;
cin.ignore();
cout << "Fichier source : ";
cin.getline(fichier, 128);
cout << "Fichier cible : ";
cin.getline(fichiercible, 128);
cout << "Lecture du fichier...\n";
ifstream fi(fichier);
while(!fi.eof())
{
getline(fi, line);
s += line+'\n';
}
fi.close();
cout << "Cryptage...\n";
cs=crypte(s, cle);
cout << "Ecriture dans  le fichier cible...\n";
ofstream fo(fichiercible);
fo << cs;
fo.close();
cout << "OK\n";
    }
  break;  
case 2:
    {
      cout << "\nEntrez la cle (uniquement des chiffre) : ";
cin >> cle;
cin.ignore();
cout << "Fichier source : ";
cin.getline(fichier, 128);
cout << "Fichier cible : ";
cin.getline(fichiercible, 128);
cout << "Lecture du fichier...\n";
ifstream fi(fichier);
while(! fi.eof())
{
getline(fi, line);
cs += line+'\n';
}
fi.close();
cout << "Decryptage...\n";
s=decrypte(cs, cle);
cout << "Ecriture dans le fichier cible...\n";
ofstream fo(fichiercible);
fo << s;
fo.close();
cout << "OK\n";
    }
break;  
default: break;  
}
}

A voir également

Ajouter un commentaire

Commentaires

scallx
Messages postés
2
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
26 juillet 2010
-
salut,
Il y a juste un truc qui m'arrache les yeux :
-Dans tes fonctions "string crypte(string x, int plus)" et "string decrypte(string x,int moins)" plus et moins sont déclarés en int alors que dans le main tu déclare "long cle;" que tu envoie ensuite à tes fonctions..... Il peut avoir des bugs à envoyer un long à une fonction qui doit avoir un int en parametre. Moi je mettrais tous en long, mais ce n'est que mon avis........
Cordialement
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
8 -
simple decalage d'octet si je ne me trompe pas???

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.