2008-12-25 32 views
15

यह भी देखें What is the best way to check the strength of a password?आप पासवर्ड जटिलता की गणना कैसे करते हैं?

कुछ एप्लिकेशन (या वेबसाइट) जब आप इसे टाइप करते हैं तो पासवर्ड जटिलता की गणना करते हैं। वे आम तौर पर एक लाल पट्टी जो नारंगी रंग में बदल प्रदर्शित करते हैं, तो हरे, फिर भी हरित अपना पासवर्ड के रूप में लंबे समय तक मिलता है, और पात्रों में से अधिक कक्षाओं में शामिल है (यानी लोअरकेस, अपरकेस, विराम चिह्न, अंक ...)

यहाँ एल्गोरिथ्म मैं है उपयोग।

private int GetPasswordComplexity(string password) 
     { 
      if (password.Length <= 4) 
       return 1; 

      int complexity = 0; 

      int digit = 0; 
      int letter = 0; 
      int cap = 0; 
      int other = 0; 


     for (int i = 0; i < password.Length; i++) 
     { 
       if (char.IsDigit(password[i]) && i!=password.Length-1) 
       digit = 1; 
      else if (char.IsLower(password[i])) 
       letter = 1; 
      else if (char.IsUpper(password[i]) && i!=0) 
       cap = 1; 
      else 
       other = 1; 
     } 

      complexity = digit + letter + cap + other; 

      if (password.Length <= 7) 
       complexity = Math.Min(3, complexity); 

      return complexity; 
     } 

मुझे इस तथ्य से चिंतित है कि मेरा एल्गोरिदम "पासवर्ड 1" रेट करेगा! "बहुत मजबूत" और "] @ feé: m" के रूप में "कमजोर" के रूप में क्योंकि यह केवल 7 char लंबा है।

संपादित करें: मैंने क्रमशः कैपिटल अक्षरों और अंकों को अनदेखा करने के लिए एल्गोरिदम अपडेट किया है जब वे क्रमशः पासवर्ड के पहले और अंतिम अक्षर हैं।

क्या यहां किसी को भी इस तरह की समस्याओं का अनुभव है? सामान्य शब्दों का पता लगाने के लिए आप एक शब्दकोश कैसे जोड़ेंगे?

उत्तर

26

क्रैकलिब जैसे कुछ का उपयोग करना बहुत अच्छा है यदि आप सभी संभावित नियमों के खिलाफ जांच करने का समय बर्दाश्त कर सकते हैं। यदि आप बस कुछ जल्दी चाहते हैं - जावास्क्रिप्ट-आधारित ताकत मीटर के लिए कहें - तो संभावित अनुमानों की संख्या का आकलन करने पर विचार करें जो ब्रूट फोर्स अटैक के लिए आवश्यक होंगे। प्रत्येक चरित्र प्रकार के लिए उस प्रकार के संभावित पात्रों की संख्या के आधार पर एक गुणक को अद्यतन किया गया है। तो यदि आपके पास केवल अंक हैं, तो गुणक 10 होगा। यदि आपके पास केवल लोअरकेस है, तो गुणक 26 है। यदि दोनों, तो गुणक 36 है - यह पासवर्ड में प्रत्येक वर्ण के लिए है, एक ब्रूट फोर्स अटैक होगा 36 विभिन्न पात्रों को आजमाने की आवश्यकता है। एक पासवर्ड जिसमें ऊपरी और लोअरकेस वर्ण, अंक और विराम चिह्न होते हैं, उसके बाद 10 + 26 + 26 + 32 = 94 (स्वीकार्य विराम चिह्न के आधार पर अधिक या कम) का गुणक होता है।

क्रमपरिवर्तन की औसत संख्या का आकलन करने के लिए एक ब्रूट फोर्स विधि लेती है, पासवर्ड में अंकों की संख्या के बराबर शक्ति के गुणक को बढ़ाएं। यह आपको ब्रूट फोर्स अटैक का उपयोग करके पासवर्ड तोड़ने के लिए अनुमान लगाए जाने वाले अनुमानों की औसत संख्या देता है। मान लें कि प्रत्येक अनुमान एक सीपीयू चक्र लेता है और सबसे तेज़ प्रोसेसर को गणना करता है कि एक निश्चित संख्या में क्रमिक क्रम में पासवर्ड को तोड़ने में कितना समय लगेगा। उदाहरण के लिए, यदि मेरा गुणक 10 था और पासवर्ड 10 वर्ण लंबा था, तो मेरे पास 10,000,000,000 संभावित संयोजन होंगे। 3GHz प्रोसेसर पर, इसे 10/3 * के या 3k सेकेंड लेना चाहिए (जहां के प्रति अनुमान चक्रों की संख्या है, आमतौर पर छोटा)। जाहिर है, यह एक कमजोर पासवर्ड है।

अब, कुछ सीमाएं स्थापित करें जो उचित पासवर्ड शक्तियों का प्रतिनिधित्व करती हैं। उदाहरण के लिए, यदि आपको लगता है कि ऊपरी और लोअरकेस अक्षरों वाले 8 वर्ण पासवर्ड को मध्यम शक्ति के लिए न्यूनतम रूप से आवश्यक है, तो आपका कटऑफ 52^8 या 3 गीगाहर्ट्ज प्रोसेसर पर लगभग 1.5 वर्ष होगा (माना जाता है कि = 1)। यदि आप अंकों में जोड़ते हैं, तो कटऑफ 62^8 या 3 गीगाहर्ट्ज प्रोसेसर पर लगभग 8 वर्ष बन जाता है।

इसे उपयोग में रखने के लिए, आपको केवल उस प्रकार के पात्रों का ट्रैक रखने की आवश्यकता है, जो आप देखते हैं, उचित गुणक का निर्माण करें, पासवर्ड की लंबाई के आधार पर अपेक्षित क्रमिक गणना की गणना करें और यह निर्धारित करने के लिए कि आपके पूर्वनिर्धारित कटऑफ के विरुद्ध इसकी तुलना करें पासवर्ड है

+0

बिल्कुल शानदार वर्णन। बहुत बहुत शुक्रिया! –

+0

अच्छा विचार। लेकिन: जटिलता ("पासवर्ड पासवर्ड") = 52^17 = 1.5^10^2 9 जटिलता ("!:^डीई 1") = 94^6 = 6x10^11 अब, कौन सा पासवर्ड मजबूत है? – Brann

+0

यह केवल एक मोटा उपाय है। आप शायद सबसे आम पासवर्ड भी स्क्रीन करना चाहते हैं। http://www.modernlifeisrubbish.co.uk/article/top-10-most-common-passwords http://lawprofessors.typepad.com/law_librarian_blog/2007/05/10_most_common_.html – tvanfosson

3

जब आप अंक, पूंजी इत्यादि देखते हैं तो मैं केवल ध्वज सेट नहीं करता बल्कि उनके लिए अंक देता हूं। स्कोर सिस्टम की तरह कुछ। एक सामान्य पत्र 1, एक अंक 2 और एक विशेष चरित्र की गणना करता है 3.

अब आपके कुल संख्या में वर्णों की संख्या और पासवर्ड कैसे बनाया गया है, दोनों के लिए खाते हैं। आपको केवल कमजोर चीज़ों के लिए रेखाएं खींचना है और क्या मजबूत है।

+0

एक विशेष चरित्र द्वारा जोड़ा गया एन्ट्रॉपी एक अंक से कम है। एक अंक द्वारा जोड़ा गया एन्ट्रॉपी एक चरित्र के लिए उससे कम है। आपको एन्ट्रॉपी की गणना करनी चाहिए। – Mausy5043

8

मैं इसके लिए क्रैकलिब का उपयोग करने की सलाह दूंगा।

+0

आप यहां पाइथन बाइंडिंग प्राप्त कर सकते हैं: http://www.nongnu.org/python-crack/ –

0

आपको एक शब्दकोश के खिलाफ भी जांच करनी चाहिए। मुझे लगता है कि सेब इसके अंतर्निहित पासवर्ड चेकर में करता है।

1

मैंने एक छोटा जावास्क्रिप्ट एप्लिकेशन (जीपीएल) लिखा था। एक नज़र डालें: Yet Another Password Meter। आप स्रोत डाउनलोड कर सकते हैं और इसे जीपीएल के तहत उपयोग/संशोधित कर सकते हैं।

1

This link वास्तव में यह मानता है कि मानदंडों का विस्तृत विवरण दिया गया है!

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