2010-08-02 13 views
11

के बीच अलग है मेरे पास एक पायथन ऐप है जिसमें मैं विंडोज़ में पैकेज बनाने के लिए उपयोग कर रहा हूं और बाद में लिनक्स पायथन ऐप में तुलना करता हूं। मैं बाद में लिनक्स में जांचने के लिए विंडोज़ में एक फ़ाइल के लिए एक एमडी 5 बना रहा हूँ। समस्या यह है कि एक ही फाइल पर एक ही कोड प्रत्येक पर्यावरण में विभिन्न एमडी 5 हैश परिणाम देता है। एमडी 5 की गणना करने के लिए मैं जिस विधि का उपयोग करता हूं वह नीचे है। (यह प्रत्येक छोर पर एक ही कोड है, और मैं दोनों विंडोज़/लिनक्स वातावरण के लिए पायथन 2.6.5 का उपयोग कर रहा हूं) जब मैं इसे अलग-अलग वातावरण में एक ही फाइल पर चलाता हूं, तो मुझे मिलते-जुलते एमडी 5 हैंश मिलते हैं।पायथन - हैशलिब एमडी 5 लिनक्स/विंडोज़

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() 

किसी भी विचार या सुझाव की सराहना की जाती है।

उत्तर

22

open(filePath, 'rb'), जहां b द्विआधारी मोड के लिए है करने के लिए बदलें open(filePath) का उपयोग करें। आप वर्तमान में टेक्स्ट मोड में खुल रहे हैं, जो पोर्टेबिलिटी मुद्दों का कारण बन सकता है।

+0

वह था! अब मैं दोनों प्रणालियों पर एमडी 5 से मेल खाता हूं। धन्यवाद –

0

जांच अगर दो फ़ाइलों समान कूट और lineendings

संबंधित मुद्दे