[help me!] - probleme cryptage simple de fichier

Résolu
darthnexus Messages postés 2 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 1 juin 2006 - 31 mai 2006 à 21:41
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 2 juin 2006 à 09:28
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
2 juin 2006 à 09:28
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.
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
1 juin 2006 à 09:27
ouvrir les fichier en binaire
0
darthnexus Messages postés 2 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 1 juin 2006
1 juin 2006 à 20:49
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!
0
Rejoignez-nous