पायथन में बड़ी फ़ाइलों के लिए MD5 हैश की गणना करना
पायथन का हैशलिब मॉड्यूल क्रिप्टोग्राफ़िक हैश की गणना के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करता है। हालाँकि, असाधारण रूप से बड़ी फ़ाइलों के लिए जिनका आकार सिस्टम मेमोरी से अधिक है, सीधे हैशलिब का उपयोग करना समस्याग्रस्त हो सकता है। फ़ाइल को प्रबंधनीय टुकड़ों में पढ़कर। यह दृष्टिकोण सुनिश्चित करता है कि संपूर्ण फ़ाइल सामग्री अत्यधिक मेमोरी का उपभोग किए बिना हैश की गई है। यहां एक नमूना पायथन फ़ंक्शन है जो इस तकनीक को लागू करता है:
import hashlib def md5_for_file(f): ब्लॉक_आकार = 2**20 md5 = hashlib.md5() जबकि सत्य: डेटा = f.read(block_size) यदि डेटा नहीं है: तोड़ना md5.अद्यतन(डेटा) रिटर्न md5.digest()
एक बड़ी फ़ाइल के MD5 हैश की गणना करने के लिए, आप फ़ंक्शन को निम्नानुसार शुरू कर सकते हैं:import hashlib
def md5_for_file(f):
block_size = 2**20
md5 = hashlib.md5()
while True:
data = f.read(block_size)
if not data:
break
md5.update(data)
return md5.digest()
फ़ाइल मोड पर नोट
with open("filename", "rb") as f:
md5 = md5_for_file(f)
अतिरिक्त विचार
सुविधा के लिए, फ़ंक्शन का एक बेहतर संस्करण नीचे प्रस्तुत किया गया है:
&&&]हैशलिब आयात करें ओएस आयात करें def generate_file_md5(rootdir, फ़ाइल नाम): एम = hashlib.md5() f के रूप में open(os.path.join(rootdir, फ़ाइल नाम), "rb") के साथ: buf = f.read() जबकि बफ़: एम.अपडेट(बीयूएफ) buf = f.read() रिटर्न m.hexdigest()सटीकता को सत्यापित करने के लिए जैकसम जैसे बाहरी उपकरणों के साथ गणना की गई हैश को क्रॉस-चेक करने की अनुशंसा की जाती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3