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

  1. #1
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    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 régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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