2010-08-02 17 views
11

Ho un'app python in cui sto creando pacchetti in windows da utilizzare e confrontati successivamente in un'applicazione python di Linux. Sto creando un MD5 per un file in Windows da controllare in seguito in Linux. Il problema è che lo stesso codice sullo stesso file fornisce diversi risultati hash Md5 in ogni ambiente. Di seguito è riportato il metodo che utilizzo per calcolare l'Md5. (È lo stesso codice su ciascuna estremità e sto usando Python 2.6.5 per entrambi gli ambienti windows/linux). Quando lo eseguo sullo stesso file in ambienti diversi, ottengo hash md5 che non corrispondono.Python - Hashlib MD5 differisce da linux/windows

def md5_for_file(filePath): 
     md5 = hashlib.md5() 
     file = open(filePath) 
     while True: 
      data = file.read(8192) 
      if not data: 
       break 
      md5.update(data) 

     file.close() 
     return md5.hexdigest() 

Tutte le idee o suggerimenti sono apprezzati.

risposta

22

Change open(filePath)-open(filePath, 'rb'), dove il b è per modalità binaria. Attualmente stai aprendo in modalità testo, che può causare problemi di portabilità.

+0

E 'stato! Ora trovo gli MD5 corrispondenti su entrambi i sistemi. Grazie –

0

verifica se i due file utilizzano la stessa codifica e caratteri di fine riga

Problemi correlati