2015-07-01 20 views
6

पर हैश से सहमत नहीं है:SHA256 हैश वेबसाइट

e201065d0554652615c320c00a1d5bc8edca469d72c2790e24152d0c1e2b6189 

लेकिन this website(SHA-256 produces a 256-bit (32-byte) hash value) मुझसे कहता है है:

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 

मुझे स्पष्ट रूप से डेटा स्वरूप समस्या या कुछ समान है। कोई विचार क्यों यह सी # SHA256 प्रबंधित विधि कुछ अलग लौट रही है? मैं इनपुट पैरामीटर के रूप में विधि "पासवर्ड" भेज रहा हूं।

private static string CalculateSHA256Hash(string text) 
    { 
     UnicodeEncoding UE = new UnicodeEncoding(); 
     byte[] hashValue; 
     byte[] message = UE.GetBytes(text); 

     SHA256Managed hashString = new SHA256Managed(); 
     string hex = ""; 

     hashValue = hashString.ComputeHash(message); 
     foreach (byte x in hashValue) 
     { 
      hex += String.Format("{0:x2}", x); 
     } 
     return hex; 
    } 
+2

कृपया पासवर्ड स्टोर करने के लिए SHA256 हैश का उपयोग न करें (मान लें कि आप इसे स्क्रैच से डिज़ाइन कर रहे हैं)। कृपया पासवर्ड संग्रहीत करने के आधुनिक तरीकों पर पढ़ें, आपको इस तरह कुछ उपयोग करना चाहिए: https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes(v=vs.110).aspx या कुछ अन्य बहु-पुनरावृत्ति विधि। – willaien

+1

लिंक के लिए धन्यवाद। हम SHA256 का उपयोग कर रहे हैं, बैकएंड उपयोगकर्ता के लिए अद्वितीय है, और हम डबल हैशिंग नहीं हैं। ऐसा लगता है कि हम जो सुधार कर सकते हैं वह SHA256 के बजाय पीबीकेडीएफ 2 का उपयोग करना है। – LampShade

उत्तर

13

UnicodeEncoding UTF-16 के उनके यूनिकोड कोड बिंदु (यह भी देखें MSDN पर टिप्पणी अनुभाग) का प्रतिनिधित्व करने के दो से चार बाइट्स करने के लिए अपने सभी पात्रों को बढ़ाने के लिए गारंटी है।

इसके बजाय (स्थिर) Encoding.UTF8 का उपयोग करें, इसलिए अधिकांश वर्ण एक बाइट में फिट होंगे। यह इस बात पर निर्भर करता है कि आपको किस प्रणाली की नकल करने की आवश्यकता है चाहे वह सभी तारों के लिए काम करे।

+0

वह था, धन्यवाद! – LampShade

संबंधित मुद्दे