[help me!] - probleme cryptage simple de fichier [Résolu]

Signaler
Messages postés
2
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
1 juin 2006
-
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
-
Salut à tous!
Je vous explique mon problème: j'ai commencé une petit programme de cryptage tout simple (je débute...) seulement voila cela fonctionne nickel sur des fichiers texte mais sur des fichiers bitmap par exemple sans que j'arrive à comprendre pourquoi le cryptage ne s'effectue pas jusqu'au bout (à vrai dire il me manque à peu près 99,9% du fichier une fois decrypté )
Alors voila je vous met le code de ma classe cryptage si quelqu'un d'entre vous pourrai éclairer ma lanterne je lui serai très reconnaissant!

PS: je met toute la source mais le problême intervient pendant l'exécution de la méthode crypter()

class CryptageSimple
{
public:
    CryptageSimple(char* cle, char* chemin1, char* chemin2)
    {
        keylen=strlen(cle);
        key=new char[keylen] ;
        strcpy(key, cle);

        int len=strlen(chemin1);
        path=new char[len];
        strcpy(path,chemin1);

        len=strlen(chemin2);
        path2=new char[len];
        strcpy(path2,chemin2);
    };
   
    bool crypter()
    {
        char line[1];
        unsigned int a;
        unsigned char b;
        int i=0;
        ifstream f(path);
        ofstream ff(path2);
            if(i>=keylen) i=0;
            f.read( line, 1 ) ;
            b=line[0];
            a=(int)b;
            a+=(int)key[i];
            a=a%255;
            b=a;
            i++;
        while(!f.eof())
        {
            ff<=keylen) i=0;
            f.read( line, 1 ) ;
            b=line[0];
            a=(int)b;
            a+=(int)key[i];
            a=a%255;
            b=a;
            i++;
        }
        ff<=keylen) i=0;
            f.read( line, 1 ) ;
            b=line[0];
            a=(int)b;
            a-=(int)key[i];
            a=a%255;
            b=(char)a;
            i++;
        while(!f.eof())
        {
            ff<=keylen) i=0;
            f.read( line, 1 ) ;
            b=line[0];
            a=(int)b;
            a-=(int)key[i];
            a=a%255;
            b=(char)a;
            i++;
        }
        cout<<"Opération effectuée";
        return 0;
    };
private:
    int keylen;
    char* key;
    char* path;
    char* path2;
};

3 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
En générale l'erreur que tu décris viens de là. Mais avec les streams C++ je sais pas comment en fait.
En C c'est effectivement cela.
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
ouvrir les fichier en binaire
Messages postés
2
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
1 juin 2006

C'est à dire ouvrir en binaire? Je dois faire quelque chose de ce genre?
FILE * f;
unsigned char b;

f=fopen(path,"rb");
fread(&b,sizeof(char),1,f);

C'est ca? Je suis désolé mais je débute....

Merci d'avance!