फ़ाइल के SHA1 चेकसम बनाने के लिए मैं फ़ाइल पर SHA1CryptoServiceProvider()
का उपयोग कैसे करूं?मैं सी # में SHA1 फ़ाइल चेकसम कैसे करूं?
उत्तर
ComputeHash विधि के साथ। यहाँ देखें:
उदाहरण स्निपेट:
using(var cryptoProvider = new SHA1CryptoServiceProvider())
{
string hash = BitConverter
.ToString(cryptoProvider.ComputeHash(buffer));
//do something with hash
}
कहाँ बफर अपनी फ़ाइल की सामग्री है।
using (FileStream fs = new FileStream(@"C:\file\location", FileMode.Open))
using (BufferedStream bs = new BufferedStream(fs))
{
using (SHA1Managed sha1 = new SHA1Managed())
{
byte[] hash = sha1.ComputeHash(bs);
StringBuilder formatted = new StringBuilder(2 * hash.Length);
foreach (byte b in hash)
{
formatted.AppendFormat("{0:X2}", b);
}
}
}
formatted
SHA-1 हैश की स्ट्रिंग प्रतिनिधित्व होता है। इसके अलावा, बाइट बफर के बजाय FileStream
का उपयोग करके, ComputeHash
भाग में हैश की गणना करता है, इसलिए आपको पूरी फ़ाइल को एक बार में लोड करने की आवश्यकता नहीं है, जो बड़ी फ़ाइलों के लिए उपयोगी है।
हैश स्ट्रिंग बनाने की प्रक्रिया में 20 तारों को उत्पन्न करने के बजाय आपको 'स्ट्रिंगबिल्डर' का उपयोग करना चाहिए। –
'फ़ाइलस्ट्रीम' 'IDISposable' है और इसका उपयोग 'उपयोग' ब्लॉक में भी किया जाना चाहिए। –
स्ट्रिंगबिल्डर प्रारंभिक क्षमता हैश –
यदि आप पहले ही स्ट्रीम के रूप में फ़ाइल पढ़ रहे हैं, तो निम्न तकनीक हैश को गणना करते समय गणना करती है। केवल चेतावनी यह है कि आपको पूरी धारा का उपभोग करने की आवश्यकता है।
class Program
{
static void Main(string[] args)
{
String sourceFileName = "C:\\test.txt";
Byte[] shaHash;
//Use Sha1Managed if you really want sha1
using (var shaForStream = new SHA256Managed())
using (Stream sourceFileStream = File.Open(sourceFileName, FileMode.Open))
using (Stream sourceStream = new CryptoStream(sourceFileStream, shaForStream, CryptoStreamMode.Read))
{
//Do something with the sourceStream
//NOTE You need to read all the bytes, otherwise you'll get an exception ({"Hash must be finalized before the hash value is retrieved."})
while(sourceStream.ReadByte() != -1);
shaHash = shaForStream.Hash;
}
Console.WriteLine(Convert.ToBase64String(shaHash));
}
}
+1। यदि आप कहीं से फ़ाइल को पढ़ना चाहते हैं तो यह उपयोगी हो सकता है (उदाहरण: http अनुरोध से), इसे किसी स्थान पर लिखें (उदाहरण: डिस्क पर) और साथ ही हैश की गणना करें। – tigrou
एक बड़ी फ़ाइल पर एक परीक्षण पर, इस कोड ने 'ComputeHash' समाधानों की तुलना में परिमाण के आदेशों को और भी खराब किया। हो सकता है कि यह 'रीडबेट' एक-बार-बार पढ़ रहा हो? –
@MichaelKropat दिलचस्प। जानकार अच्छा लगा। 10 गुना, धीमा 100 गुना? –
इसके अलावा, आप की कोशिश कर सकते हैं:
FileStream fop = File.OpenRead(@"C:\test.bin");
string chksum = BitConverter.ToString(System.Security.Cryptography.SHA1.Create().ComputeHash(fop));
- 1. मैं इसकी जांच कैसे करते हैं कि कोई स्ट्रिंग मान्य md5 या SHA1 चेकसम स्ट्रिंग
- 2. मैं एक फाइल पर SHA1 हैश कैसे करूं?
- 3. मैं मीडिया फ़ाइल का स्थिर चेकसम कैसे बना सकता हूं?
- 4. उद्देश्य सी: SHA1
- 5. मैं सी # में ज़िप फ़ाइल कैसे डाउनलोड करूं?
- 6. मैं सी # में फ़ाइल से संशोधित दिनांक कैसे प्राप्त करूं?
- 7. मैं उद्देश्य-सी में एक टेक्स्ट फ़ाइल कैसे पार्स करूं?
- 8. मैं सी # में सामान्य फ़ाइल प्रकार आइकन कैसे प्राप्त करूं?
- 9. रोलिंग चेकसम
- 10. गिट "खराब sha1 फ़ाइल" त्रुटि
- 11. Android में फ़ाइल के लिए MD5 चेकसम कैसे उत्पन्न करें?
- 12. Git एक SHA1
- 13. रूबी में hmac-sha1 सी # HMACSHA1
- 14. मैं सी में मेमोरी कैसे मुक्त करूं?
- 15. मैं सी ++ में कॉलबैक कैसे कार्यान्वित करूं?
- 16. मैं सी # में% LocalAppData% कैसे प्राप्त करूं?
- 17. एचएमसी SHA1 हैश - सी # रूबी
- 18. SHA1 सादा पाठ? सी # .NET
- 19. मैं सी # से SQLite डीबी फ़ाइल से कैसे कनेक्ट करूं?
- 20. मैं सी # के साथ एक HTML फ़ाइल कैसे मान्य करूं?
- 21. सी प्रोग्रामिंग में SHA1 हैशिंग का उपयोग कैसे करें
- 22. फेडेक्स चेकसम एल्गोरिदम?
- 23. एक धार फ़ाइल से SHA1 हैश निकालें
- 24. चेकसम की गणना कैसे करें
- 25. मैं ऑब्जेक्टिव सी फ़ंक्शन कैसे कॉल करूं?
- 26. सी में मैं फ़ाइल के फ़ाइल नाम को कैसे मुद्रित करूं जो शेल
- 27. मैं रूबी में SHA1 हैश कैसे बना सकता हूं?
- 28. टीसीपी चेकसम
- 29. अमान्य SHA1 हस्ताक्षर फ़ाइल को पचाने
- 30. गिट पुल त्रुटि: अस्थायी sha1 फ़ाइल नाम
+1 एक ही बार में एक हेक्स स्ट्रिंग उत्पन्न करने के लिए 'BitConverter' का उपयोग करने पर एक महान टिप के लिए। –
SHA1CryptoServiceProvider को 'उपयोग' ब्लॉक – Mike737
'लिट कनवर्टर' में लपेटा जाना चाहिए, @ mgbowen के समाधान के विपरीत एक डैश एए-एफ 0-सीसी के साथ बाइट्स को अलग करता है। वांछित क्या हो सकता है या नहीं हो सकता है। –