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

Python Discussion :

Problème de MD5 hash [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut Problème de MD5 hash
    Bonjour !

    J'essaie de comparer le MD5 d'un fichier local et d'un fichier distant (à priori le même fichier que je copie/colle dans mon repertoire www de wamp), mais je ne comprends pas les "checksum" ne correspondent pas....

    Voici le code pour les checksum :

    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
    #-*- coding: utf-8 -*-
     
    import hashlib
    import requests
     
    def md5Checksum(filePath,url):
        if url==None:
            with open(filePath, 'rb') as fh:
                m = hashlib.md5()
                while True:
                    data = fh.readline(8192)
                    #print data #OUTPUT DE DATA
                    if not data:
                        break
                    m.update(data)
                return m.hexdigest()
        else:
            r = requests.get(url)
            m = hashlib.md5()
            for line in r.iter_lines(chunk_size=8192):
                #print line #OUTPUT DE LINE
                m.update(line)
            return m.hexdigest()
     
    print "checksum_local :",md5Checksum("projectg715gb.pak",None)
    print "checksum_remote :",md5Checksum(None,"http://testpangya.ddns.net/projectg715gb.pak")
    Et à ma grande surprise j'obtiens ceci en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    checksum_local : 9d33806fdebcb91c3d7bfee7cfbe4ad7
    checksum_remote : a13aaeb99eb020a0bc8247685c274e7d
    Taille de Projectg715gb.pak = 14.7Mo
    Cependant ce code fonctionne sur de petits fichiers, si je prends un fichier texte "toto.txt" de taille 1ko les checksum vont correspondre....

    Quelqu'un peut-il m'expliquer pourquoi svp ? Merci d'avance !

    PS : Je débute sur les checksum donc peut-être que je m'y suis mal pris....Merci pour votre indulgence

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 742
    Par défaut
    Salut,

    Citation Envoyé par Fawn_Roxx_wxPython Voir le message
    Quelqu'un peut-il m'expliquer pourquoi svp ? Merci d'avance !
    Relisez votre code et essayez d'expliquer pourquoi il n'y a pas de m.update(...) dans le cas URL.... (et pour les autres boulettes, on verra).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Relisez votre code et essayez d'expliquer pourquoi il n'y a pas de m.update(...) dans le cas URL.... (et pour les autres boulettes, on verra).

    - W
    J'étais en train d'éditer pendant votre réponse !

  4. #4
    Membre averti
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut
    Voici un exemple avec un .txt (1Ko)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print "checksum_local :",md5Checksum("toto.txt",None)
    print "checksum_remote :",md5Checksum(None,"http://testpangya.ddns.net/toto.txt")
    Et j'obtiens bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    checksum_local : f71dbe52628a3f83a77ab494817525c6
    checksum_remote : f71dbe52628a3f83a77ab494817525c6

  5. #5
    Membre averti
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut
    En examinant les output de "data" et "line" je pense que mon problème vient du fait que les lignes ne sont pas lues de la même façon...Mais j'ai beau essayer je ne trouve pas de solution...

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 742
    Par défaut
    Citation Envoyé par Fawn_Roxx_wxPython Voir le message
    Mais j'ai beau essayer je ne trouve pas de solution
    Vous voyez que ce qui vous fout dedans, c'est les oublis dans les copie/coller: essayez de factoriser un peu votre code.

    à la fin vous devez avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
              m = hashlib.md5()
              for data in <some_iterator>:
                   m.update(data)
              return  m.hexdigest()
    et la partie URL ou fichier local doit se contenter d'assigner ce qui va bien à <some_iterator>.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec un hash de tableau de hash
    Par hy00ga dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2011, 15h10
  2. [MySQL] problème de MD5
    Par snooppy dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 28/02/2011, 16h33
  3. Problème avec un hash
    Par Crosser02 dans le forum Langage
    Réponses: 6
    Dernier message: 25/04/2009, 18h14
  4. Problème avec un hash
    Par SkyBioSS dans le forum Langage
    Réponses: 2
    Dernier message: 14/03/2008, 19h55
  5. Problème programmation md5
    Par deltabweb dans le forum Windows
    Réponses: 15
    Dernier message: 20/01/2008, 19h06

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