2013-01-22 14 views
5

मेरे पास निम्न कोड है जो पासवर्ड से हैश बनाता है और उसके बाद इसे डीबी में संग्रहीत हैश पासवर्ड से तुलना करता है। सभी http पर ठीक काम करता है। यह एक asp.net webforms C# 4,0HMACSHA1 SSL समस्या

HMACSHA1 hash = new HMACSHA1(); 
hash.Key = Encoding.Unicode.GetBytes(password); 
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password))); 

हालांकि HTTPS/SSL से अधिक जब चल रहा है के तहत चल आवेदन के लिए इनकोडिंग पासवर्ड अलग है और इसलिए उपयोगकर्ता प्रवेश नहीं कर सकते।

एसएसएल पर जा रहे हैंश की गणना करते समय .net फ्रेमवर्क कुछ अलग करता है?

यदि मैं कोड से कदम उठाता हूं और एन्कोडेड पासवर्ड कॉपी करता हूं और अपना डीबी अपडेट करता हूं तो एसएसएल पर मैं लॉगिन कर सकता हूं।

कोई विचार?

बहुत धन्यवाद

+1

एसएसएल एएसपीनेट के लिए पारदर्शी है, मुझे नहीं पता कि पासवर्ड कहां और कैसे क्लाइंट से सर्वर तक यात्रा करते हैं और जहां तुलना की जाती है। – Aristos

+2

आप एचएमएसी का उपयोग क्यों करते हैं और फिर कुंजी और डेटा-टू-बी-पासवर्ड को पास करते हैं? यह कोई समझ नहीं आता है। – Robert

+1

रॉबर्ट, मेरा कोड ओपनसोर्स सीएमएस umbraco का हिस्सा नहीं है। बस एक समस्या को ठीक करने की कोशिश कर रहा है जिसे मैंने पाया है और ऐसा लगता है कि https पर एन्कोडिंग अलग है जब http से अधिक संभवतः .NET ढांचे की गहराई में कुछ चल रहा है? – Ismail

उत्तर

1

यह सुनिश्चित करेंगे कि hash.key अपने आवेदन भर में एक समान है जो बदले में, यह सुनिश्चित करेंगे कि गणना हैश है के रूप में http://msdn.microsoft.com/en-CA/library/39d1w2xf%28v=vs.100%29.aspx

इस पर MSDN लेख में परिभाषित वैश्वीकरण सेटिंग्स की स्थापना करने का प्रयास करें प्रत्येक बार जब यह एक कुंजी के साथ गणना की जाती है।

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