.NET ढांचे में एमडी 5 हैश की गणना करने के कुछ तरीके हैं, ऐसा लगता है, हालांकि ऐसा कुछ है जिसे मैं समझ नहीं पा रहा हूं;MD5.Create और MD5CryptoServiceProvider का उपयोग करने के बीच क्या अंतर है?
निम्नलिखित के बीच अंतर क्या है? क्या उन्हें एक दूसरे से अलग करता है? वे समान परिणाम प्राप्त होने लगते हैं:
public static string GetMD5Hash(string str)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bytes = ASCIIEncoding.Default.GetBytes(str);
byte[] encoded = md5.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encoded.Length; i++)
sb.Append(encoded[i].ToString("x2"));
return sb.ToString();
}
public static string GetMD5Hash2(string str)
{
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] bytes = Encoding.Default.GetBytes(str);
byte[] encoded = md5.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encoded.Length; i++)
sb.Append(encoded[i].ToString("x2"));
return sb.ToString();
}
पर परीक्षण किया गया है, जहां आप 'MD5.Create()' विधि को एक प्रकार की फैक्ट्री विधि के रूप में मानते हैं जो कि 'MD5CryptoServiceProvider' उदाहरण को फिर से शुरू कर सकता है लेकिन भविष्य के संस्करणों में किसी भी प्रकार के MD5 कार्यान्वयन को वापस करने में लचीलापन है ? इसका रिटर्न प्रकार 'MD5' है, इसलिए यदि आप चाहते हैं कि आपका प्रोग्राम नवीनतम कार्यान्वयन का उपयोग करे, तो 'MD5.Create()' विधि का उपयोग करें। – Ben
सी # के लिए एक सार वर्ग के उदाहरण को वापस करने के लिए कैसे संभव है? मैंने सोचा कि एक अमूर्त वर्ग का पूरा उद्देश्य यह था कि इसे तत्काल नहीं किया जा सकता है, लेकिन इसके विरासत वाले बच्चे ही कर सकते हैं। – silkfire
MD5.Create() MD5CryptoServiceProvider को वापस कर रहा है MD5 सार वर्ग नहीं। –