मैं काफी बड़ी फ़ाइलों (गीगाबाइट) की चेकसम गणना करनी है। यह निम्नलिखित विधि का उपयोग कर पूरा किया जा सकता:buffered पढ़ने के साथ MD5 (या अन्य) हैश की गणना करना संभव है?
private byte[] calcHash(string file)
{
System.Security.Cryptography.HashAlgorithm ha = System.Security.Cryptography.MD5.Create();
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] hash = ha.ComputeHash(fs);
fs.Close();
return hash;
}
हालांकि, फ़ाइलों सामान्य रूप से एक बफ़र ढंग से बस पहले से लिखे गए हैं (जैसे लेखन 32MB की एक समय में)। मैं इतना विश्वास है कि मैं एक हैश समारोह है कि मुझे लेखन के रूप में एक ही समय में एक MD5 (या अन्य) हैश की गणना करने की अनुमति दी है, जिसकी ओवरराइड देखा हूँ, अर्थात्: एक बफर के हैश की गणना, तो खिला अगले चरण में हैश जिसके परिणामस्वरूप कि ।
कुछ इस तरह: (स्यूडोकोड-ish)
byte [] hash = new byte [] { 0,0,0,0,0,0,0,0 };
while(!eof)
{
buffer = readFromSourceFile();
writefile(buffer);
hash = calchash(buffer, hash);
}
हैश अब क्या पूरी फ़ाइल पर calcHash समारोह चलाकर पूरा किया जाएगा करने के लिए sililar है।
अब, मैं उस तरह अधिलेखन the.Net 3.5 फ्रेमवर्क में नहीं मिल सकता है, मैं सपना देख रहा हूँ? क्या यह कभी अस्तित्व में नहीं है, या क्या मैं खोज में बस लूसी हूं? एक बार में लेखन और चेकसम गणना दोनों करने का कारण यह है कि बड़ी फ़ाइलों के कारण यह समझ में आता है।
ओएमजी, उसी प्रारूपण का उपयोग करके, एक ही सुझाव पोस्ट किया गया है =) –
ठीक है, लेकिन एक संदर्भ भी प्रदान करने के लिए +1! –
Ay caramba! वो रहा! वह वह काम था जिसे मैं खोज रहा था। जानना अच्छा है कि मैं इसे सब कुछ नहीं बना रहा था। तुरंत उत्तर देने के लिए गुफा और रूबेन्स के लिए धन्यवाद। आप दोनों को +1, मैं शामिल कोड उदाहरण के कारण इस जवाब को स्वीकार करूंगा। –