मैं एक ऐप पर काम कर रहा हूं जिसे मैं कुछ दिन बेचना चाहता हूं - जल्द ही बाद में! मैं इसे बचाने के लिए एक उचित सरल धारावाहिक संख्या योजना विकसित करना चाहता हूं।एक साधारण सीरियल नंबर जेनरेटर/सत्यापनकर्ता के विकास के लिए एक अच्छा तरीका क्या है?
- एक साधारण संख्या/अक्षर संयोजन से अधिक नहीं 25-30 अक्षरांकीय अक्षर लंबी (लगता है माइक्रोसॉफ्ट उत्पाद कुंजी)
- किसी भी व्यक्तिगत जानकारी के भाग के रूप (कोई ईमेल पता की तरह) में प्रवेश के लिए उपयोगकर्ता की आवश्यकता नहीं है सत्यापन
मैं इस बारे में सोच रहा हूं (बहुत कम) बिट, और मुझे लगता है कि सार्वजनिक कुंजी क्रिप्टोग्राफी शुरू करने के लिए एक अच्छी जगह है। मैं एक स्ट्रिंग उत्पन्न कर सकता हूं जो लाइसेंस की पहचान करता है (जैसे एसकेयू + सादा ओले 'अभिन्न सीरियल नंबर), हैश इसे, एन्क्रिप्ट करें, और सीरियल नंबर + पहचानकर्ता को 25 अंकों (या तो) अल्फान्यूमेरिक कुंजी में एन्कोड करें। ऐप फिर एक सीरियल नंबर और "हस्ताक्षर" में कुंजी को डीकोड करेगा, एक पहचानकर्ता हैश उत्पन्न करेगा, संबंधित सार्वजनिक कुंजी का उपयोग करके "हस्ताक्षर" को डिक्रिप्ट करेगा और जेनरेट किए गए पहचानकर्ता हैश के खिलाफ इसकी तुलना करेगा।
अनिवार्य रूप से, उत्पाद कुंजी में डेटा के दो टुकड़े होते हैं: उपयोगकर्ता का दावा करने वाला सीरियल नंबर प्लस के हस्ताक्षर के साथ प्रोग्राम उस दावे को सत्यापित करने के लिए उपयोग कर सकता है। मुझे नहीं पता कि 25 अल्फान्यूमेरिक वर्ण (जो 120 बिट्स के यथार्थवादी कुल के लिए प्रत्येक 5 बिट्स को एन्कोड करते हैं) यह सब कुछ के लिए पर्याप्त है। लेकिन, यह क्रिप्टोग्राफिक रूप से सुरक्षित नहीं होना चाहिए, बस पर्याप्त है कि कोड आसानी से अनुमानित नहीं हैं। मैं छोटी कुंजी लंबाई और छोटे हैंश के साथ ठीक हूँ।
जहां तक कार्यान्वयन के रूप में चला जाता है, एप्लिकेशन मैक ओएस एक्स के लिए ऑब्जेक्टिव-सी में लिखा है, लेकिन दिया कितना आसान है कोको क्षुधा में कोड इंजेक्षन करने के लिए है, मैं शायद सत्यापन कोड सीधे सी
में लिखेंगे
क्रिप्टोग्राफी कैसे क्रैक करना आसान बनाता है? कुंजी की जांच करने के लिए मैं जिस भी विधि का उपयोग करता हूं उसे क्रैक किया जा सकता है, तो क्रिप्टोग्राफी को और अधिक कमजोर बनाता है? आप उन संख्याओं के लिए जनरेटर कैसे लिखेंगे जो कि कई नियमों का अनुपालन करते हैं? ऐसा लगता है कि करना मुश्किल होगा। – Alex
@Alex: क्रिप्टोग्राफिक एल्गोरिदम आमतौर पर मानक पुस्तकालयों में लागू होते हैं (आपको कभी भी क्रिप्टो के अपने कार्यान्वयन को तब तक नहीं शुरू करना चाहिए जबतक कि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं।)। आपके कोड में निजी कुंजी है, इसलिए क्रैकर्स को केवल उसको प्राप्त करने की आवश्यकता है, कोड को इंजीनियर करने की आवश्यकता नहीं है। – bh213