IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

erreur de sha512 Impossible de faire un hash d'un fichier archive .7z


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif
    Avatar de lionceau
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Par d�faut erreur de sha512 Impossible de faire un hash d'un fichier archive .7z
    Bonjour ,

    Pour une raison que j'ignore j'ai toujours le m�me hash avec la fonction ci dessous lorsque j'essai de faire un hash d un fichier d'archive .7z :
    Ma fonction fonctionne bien pour le hash d'un fichier .txt mais pas avec un fichier archive .7z pourtant je n'ai pas de message d'erreur
    Pourquoi cela ne fonctionne pas avec une archive.7z?
    Avez vous svp des conseils ?

    Merci.



    m_NameFile correspond au chemin du fichier , par exemple c:\\dossier\\archive.7z
    m_NameFileHash correspond au chemin vers le fichier de hash sha512 qui sera g�n�r�

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    bool bHashDone = false;
    	std::ofstream fileHash;
    	std::ifstream file;
     
       if( NULL != m_NameFile.c_str() )
       {
          try
          {
    		  SystemConfiguration::COutilsCommun::OpenOStream(fileHash,m_NameFileHash.c_str());
    		  SystemConfiguration::COutilsCommun::OpenIStream(file, m_NameFile.c_str());
     
    		  std::ofstream fileHash( m_NameFileHash.c_str(), std::ofstream::out|std::ofstream::trunc );
             std::ifstream file( m_NameFile.c_str() );
             // if std::ifstream file is huge ( I have one error then I must read the 
             if(!file)
             {
    			 std::cout << "impossible d'ourvrir le fichier : " << m_NameFile.c_str() <<std::endl;
    			 std::cout << "taille du fichier : " << file.tellg() <<std::endl;
             }      
    		 if(!fileHash)
    		 {
    			 std::cout << "impossible de creer le fichier : " << m_NameFileHash.c_str() <<std::endl;
    		 }   
     
             unsigned char digest[SHA512_DIGEST_LENGTH];
             std::string mdString(SHA512_DIGEST_LENGTH*2,' ');
             std::stringstream buffer; //// variable with the content of the file 
     
             if( (file)&& (fileHash) )
             {			
                buffer << file.rdbuf();
                SHA512_CTX ctx;
                SHA512_Init( &ctx );
                SHA512_Update( &ctx, buffer.str().c_str(), strlen(buffer.str().c_str()) );
                SHA512_Final(digest, &ctx);
     
                char* bufInStr = const_cast<char*>(mdString.data()); 
                for ( int i = 0 ; i < SHA512_DIGEST_LENGTH ; ++i ) {
                   // FYI : don't use sprintf_s() because  \0 can't be inside std::string
                   const char tabCaractHexa[] = "0123456789abcdef";
                   int valueToConvert = digest[i];
                   int first = (valueToConvert >> 4) & 0xF; 
                   int second  = valueToConvert & 0xF;      
                   bufInStr[i*2]   = tabCaractHexa[first];  
                   bufInStr[i*2+1] = tabCaractHexa[second];
                }
    			bHashDone = true;
                fileHash << mdString;
                std::cout <<"SHA512 digest of  " << m_NameFile.c_str() << " is "<< mdString <<  std::endl;
             }

  2. #2
    Membre tr�s actif
    Avatar de lionceau
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Par d�faut
    Je pense fortement que le soucis provient de cette ligne pour ouvrir un fichier Zip :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::ifstream file( m_File.c_str() );
    Est ce que vous me conseillez d'utiliser une autre fonction\type ?

    Svp , quel type me conseillez vous pour charger un zip ou un fichier video de 30giga maximum ?

    Merci

    PS : c 'est deux sujets diff�rents c 'est pourquoi je me suis permis de creer 2 messages

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Que fait SystemConfiguration::COutilsCommun::OpenIStream?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Impossible de faire un Onunload dans un fichier du disque
    Par msoldano dans le forum Informix
    R�ponses: 6
    Dernier message: 15/09/2009, 12h47
  2. R�ponses: 19
    Dernier message: 09/04/2008, 17h05
  3. [Processus] Faire un Hash sur un programme en m�moire
    Par KiLVaiDeN dans le forum Windows
    R�ponses: 2
    Dernier message: 23/11/2005, 18h40
  4. Impossible de faire marcher SESSIONS_PER_USER
    Par jack554 dans le forum Oracle
    R�ponses: 7
    Dernier message: 05/01/2005, 11h50
  5. impossible de faire fonctionner phppgadmin et pgdmin3
    Par le_ben dans le forum PostgreSQL
    R�ponses: 6
    Dernier message: 09/12/2004, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo