मैंने यही गलती की। डिफ़ॉल्ट पासवर्ड 50 लंबा था इसलिए मैंने 50 लंबी यादृच्छिक स्ट्रिंग उत्पन्न करने के लिए पॉवरशेल का उपयोग किया और पुराने SECRET_KEY को इसके साथ बदल दिया। मुझे लॉग इन किया गया था और SECRET_KEY के स्थान पर मेरे पिछले सत्र को अमान्य कर दिया गया था।
पॉवर्सशेल ( स्रोत ) के साथ:
# Load the .net System.Web namespace which has the GeneratePassword function
[Reflection.Assembly]::LoadWithPartialName("System.Web")
# GeneratePassword(int length, int numberOfNonAlphanumericCharacters)
[System.Web.Security.Membership]::GeneratePassword(50,5)
बाश ( स्रोत ) के साथ:
# tr includes ABCabc123 and the characters from OWASP's "Password special characters list"
cat /dev/urandom | tr -dc 'A-Za-z0-9!"#$%&\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 100 ; echo
इस बिंदु पर मैंने सोचा कि क्यों न एक बड़ी कुंजी आज़माई जाए, इसलिए मैंने इसे 100 और 1000 लंबी कुंजी के साथ आज़माया। दोनों ने काम किया। यदि मैं स्रोत कोड को समझता हूं , तो हस्ताक्षरकर्ता फ़ंक्शन द्वारा लौटाए गए ऑब्जेक्ट बेस 64 में एक एचएमएसी हैश है। RFC 2104 के पास HMAC गुप्त कुंजी की आवश्यक लंबाई के लिए कहने के लिए यह है।
बी बाइट्स की तुलना में अधिक समय तक कुंजियों का उपयोग करने वाले एप्लिकेशन पहले एच का उपयोग करके कुंजी को हैश करेंगे और फिर एचएमएसी को वास्तविक कुंजी के रूप में परिणामी एल बाइट स्ट्रिंग का उपयोग करेंगे।
HMAC की कुंजी किसी भी लम्बाई की हो सकती है (B बाइट्स की तुलना में अधिक समय पहले H का उपयोग करके हैशेड किया जाता है)। हालांकि, एल बाइट्स से कम दृढ़ता से हतोत्साहित किया जाता है क्योंकि यह फ़ंक्शन की सुरक्षा ताकत को कम करेगा। एल बाइट्स की तुलना में लंबे समय तक कुंजी स्वीकार्य हैं, लेकिन अतिरिक्त लंबाई फ़ंक्शन शक्ति में उल्लेखनीय रूप से वृद्धि नहीं करेगी। (यदि कुंजी की यादृच्छिकता को कमजोर माना जाता है तो एक लंबी कुंजी उचित हो सकती है।)
सामान्य बोल में अनुवाद करने के लिए, गुप्त कुंजी का आकार आउटपुट के समान आकार होना चाहिए। चाबी भी बिट्स में होना चाहिए। बेस 64 में प्रत्येक अंक 6 बिट्स का प्रतिनिधित्व करता है। इसलिए यदि आपके पास 50 वर्ण का पासवर्ड है, तो आपके पास 50 x 6 = 300 बिट गुप्त कुंजी होगी। यदि आप SHA256 का उपयोग कर रहे हैं, तो आपको 256 बिट कुंजी की आवश्यकता होगी ( sha256 परिभाषा द्वारा 256 बिट्स का उपयोग करता है )। तो जब तक आप SHA256 से बड़े हैशिंग एल्गोरिथ्म का उपयोग करने की योजना नहीं बनाते हैं, तब तक 50 लंबा पासवर्ड काम करना चाहिए।
लेकिन जब से कुंजी में कोई अतिरिक्त बिट्स हैशेड किया जा रहा है, तो इसके आकार में प्रदर्शन में भारी कमी नहीं होगी। लेकिन यह आपको गारंटी देगा कि आपके पास बड़े हैश कार्यों के लिए पर्याप्त बिट्स हैं। SHA-512 एक 100 लंबे SECRET_KEY ( 50 x 6 = 600 बिट> 512 बिट्स ) द्वारा कवर किया जाएगा ।
data decode will break
और हो सकता है कि कुछ कोड (django या उदाहरण परियोजना में) इंगित करें जो टूट जाएगा? संपादित करें: अभी भी django 1.4 का उपयोग कर रहा है - क्या यह मामला है?