मैं एक फ़ाइल से एमडी 5, एसएचए और अन्य हैंश कैसे प्राप्त कर सकता हूं लेकिन केवल एक पास कर रहा हूं? मेरे पास 100 एमबी फाइलें हैं, इसलिए मैं उन 100 एमबी फाइलों को कई बार संसाधित करने से नफरत करता हूं।मैं केवल एक पास का उपयोग कर फ़ाइल के एकाधिक हैंश कैसे बना सकता हूं?
6
A
उत्तर
7
यहां @Jason S
' suggestion का उपयोग करके संशोधित @ʞɔıu
's answer है।
from __future__ import with_statement
from hashlib import md5, sha1
filename = 'hash_one-pass.py'
hashes = md5(), sha1()
chunksize = max(4096, max(h.block_size for h in hashes))
with open(filename, 'rb') as f:
while True:
chunk = f.read(chunksize)
if not chunk:
break
for h in hashes:
h.update(chunk)
for h in hashes:
print h.name, h.hexdigest()
15
शायद ऐसा कुछ?
>>> import hashlib
>>> hashes = (hashlib.md5(), hashlib.sha1())
>>> f = open('some_file', 'r')
>>> for line in f:
... for hash in hashes:
... hash.update(line)
...
>>> for hash in hashes:
... print hash.name, hash.hexdigest()
या पाश f.read (1024) या ऐसा ही कुछ खत्म होने निश्चित लंबाई ब्लॉक
3
मैं अजगर पता नहीं है, लेकिन मैं परिचित w/हैश गणना कर रहा हूँ।
यदि आप मैन्युअल रूप से फ़ाइलों को पढ़ने में संभालते हैं, तो एक समय में केवल एक ब्लॉक (256 बाइट्स या 40 9 6 बाइट्स या जो कुछ भी) में पढ़ें, और प्रत्येक एल्गोरिदम के हैश को अद्यतन करने के लिए डेटा के प्रत्येक ब्लॉक को पास करें। (आपको शुरुआत में राज्य शुरू करना होगा और अंत में राज्य को अंतिम रूप देना होगा।)
संबंधित मुद्दे
- 1. मैं .NET मेटाडाटा-केवल 'संदर्भ असेंबली' कैसे बना सकता हूं और उपयोग कर सकता हूं?
- 2. मैं अजगर का उपयोग कर एकल .exe फ़ाइल के साथ एक एप्लिकेशन कैसे बना सकता हूं?
- 3. मैं एकाधिक गुणों के लिए CABasicAnimation कैसे बना सकता हूं?
- 4. मैं जेएक्सएल का उपयोग कर एक नई एक्सेल फ़ाइल कैसे बना सकता हूं?
- 5. मैं पर्ल का उपयोग कर एक CSV फ़ाइल कैसे बना सकता हूं?
- 6. मैं rspec का उपयोग कर फ़ाइल के अस्तित्व को नकली/नकली कैसे बना सकता हूं?
- 7. मैं केवल एक बूस्ट लाइब्रेरी/फ़ाइल का उपयोग कैसे कर सकता हूं?
- 8. मैं मीडिया फ़ाइल का स्थिर चेकसम कैसे बना सकता हूं?
- 9. मैं PHP का उपयोग कर स्कीमा के आधार पर एक XML दस्तावेज़ कैसे बना सकता हूं?
- 10. मैं समानांतर में एकाधिक कॉन्फ़िगरेशन कैसे बना सकता हूं?
- 11. मैं पर्ल में एक बाइनरी फ़ाइल कैसे बना सकता हूं?
- 12. मैं कमांड लाइन का उपयोग कर एक SharePoint 2010 पैकेज कैसे बना सकता हूं?
- 13. मैं JAXB का उपयोग कर एक विशेष क्रम में @XmlAttribute कैसे बना सकता हूं?
- 14. मैं ड्रूपल 7 फॉर्म एपीआई का उपयोग करके एकाधिक फ़ाइल अपलोड कैसे कर सकता हूं?
- 15. क्या मैं एकाधिक "साथ" का उपयोग कर सकता हूं?
- 16. मैं node.js में एक आरएसएस फ़ाइल कैसे बना सकता हूं?
- 17. मैं .Net का उपयोग कर Outlook PST फ़ाइल कैसे बना सकता हूं?
- 18. मैं एक constraintViolationException कैसे बना सकता हूं?
- 19. मैं django फॉर्म एकाधिक सबमिट बटन कैसे बना सकता हूं?
- 20. मैं प्रतिबिंब का उपयोग करके सी # सरणी कैसे बना सकता हूं और केवल जानकारी टाइप कर सकता हूं?
- 21. जावास्क्रिप्ट का उपयोग करके मैं div कैसे बना सकता हूं और शैली बना सकता हूं?
- 22. मैं केवल परीक्षण परीक्षणों के रूप में परीक्षणों का एक सेट कैसे बना सकता हूं?
- 23. मैं हेडर-केवल लाइब्रेरी कैसे बना सकता हूं?
- 24. मैं केवल subrepo के परिवर्तन कैसे कर सकता हूं?
- 25. मैं वाईएक्स का उपयोग कर एक समेकित फ़ाइल के लिए आइकन कैसे सेट कर सकता हूं?
- 26. मैं वीएस 2012 का उपयोग कर एक (वीएसटीओ) ऑफिस 2007 ऐड-इन कैसे बना सकता हूं?
- 27. एंड्रॉइड: क्या मैं एकाधिक डेटाबेस फ़ाइलों के लिए एक SQLiteOpenHelper क्लास का उपयोग कर सकता हूं?
- 28. जब मैं केवल चरित्र ऑफ़सेट जानता हूं तो मैं एक रेंज ऑब्जेक्ट कैसे बना सकता हूं?
- 29. उद्देश्य सी का उपयोग करके मैं एक ज़िप फ़ाइल कैसे बना सकता हूं?
- 30. क्या मैं केवल makecert.exe का उपयोग कर Windows Azure के लिए एक स्व-हस्ताक्षरित SSL प्रमाणपत्र बना सकता हूं?
की तरह यह काम करेगा, लेकिन मैं (कुछ बाइनरी फ़ाइलें पंक्ति विराम शामिल नहीं हो सकता) –
f.readlines() की एक प्रति-लाइन आधार के बजाय एक निश्चित ब्लॉक आकार का उपयोग बाइट्स पढ़ें लग रहा है यही कारण है कि आवश्यकता है ~ 100 एमबी है, लेकिन एक मात्र 'एफ' काम करता है (फाइल ऑब्जेक्ट पाइथन में लाइनों पर एक पुनरावर्तक है) – jfs
' फ़ाइल में * लाइनों पर एफ * iterates में लाइन के लिए। यदि रेखा का आकार 1 एमबी है तो इससे कोई फ़र्क नहीं पड़ता कि आप किस बफर आकार का उपयोग करते हैं; लेन (रेखा) 2 ** 20 होगी। इसलिए 'ओपन() 'के लिए तीसरा पैरामीटर इस मामले में उपयोगी नहीं है। – jfs