मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसमें हार्डवेयर कार्यान्वयन के लिए निम्न-स्तर सी सॉफ्टवेयर लिखना शामिल है। हम अपने उपकरणों के लिए एक नई सुविधा को कार्यान्वित करना चाहते हैं कि जब वे एक संबद्ध लाइसेंस कुंजी खरीदते हैं तो हमारे उपयोगकर्ता अनलॉक कर सकते हैं।मैं तृतीय पक्ष सॉफ़्टवेयर के बिना अद्वितीय, गैर अनुक्रमिक धारावाहिक कुंजी कैसे उत्पन्न कर सकता हूं?
वांछित कार्यान्वयन चरण सरल हैं। उपयोगकर्ता हमें कॉल करता है, वे सुविधा का अनुरोध करते हैं और हमें भुगतान भेजते हैं। इसके बाद, हम उन्हें एक उत्पाद कुंजी ईमेल करते हैं जिसे वे सुविधा को अनलॉक करने के लिए अपने हार्डवेयर में इनपुट करते हैं।
हमारा हार्डवेयर इंटरनेट से कनेक्ट नहीं है। इसलिए, एक एल्गोरिदम इस तरह कार्यान्वित किया जाना चाहिए कि इन चाबियाँ दोनों सर्वर से और डिवाइस के भीतर से उत्पन्न की जा सकें। चाबियों के लिए बीज हार्डवेयर सीरियल नंबर से प्राप्त किए जा सकते हैं, जो दोनों स्थानों पर उपलब्ध है।
मुझे एक साधारण एल्गोरिदम की आवश्यकता है जो अनुक्रमिक संख्याएं ले सकता है और 16-20 अल्फान्यूमेरिक वर्णों की अद्वितीय, गैर अनुक्रमिक कुंजी उत्पन्न कर सकता है।
अद्यतन
SHA-1 जाना सबसे अच्छा तरीका लग रहा है। हालांकि, मैं SHA-1 कुंजी के नमूना आउटपुट से जो देख रहा हूं वह यह है कि वे बहुत लंबे (40 वर्ण) हैं। अगर मैं 40 चार कुंजी लेता हूं और कहता हूं, तो पिछले 16 पात्रों के अलावा सभी को छोटा कर दूंगा?
यदि आप केवल 16 बेस -64 अक्षरों का उपयोग करते हैं तो यह 96 बिट्स है। यदि आप 281474976710656 धारावाहिक संख्याएं उत्पन्न करते हैं (यह 2^36 कुंजी - [जन्मदिन विरोधाभास] (http://en.wikipedia.org/wiki/Birthday_problem) 50 है, तो आप टकराव (पढ़ने: गैर-अद्वितीय सीरियल नंबर) की उम्मीद कर सकते हैं। % बाध्य) –
इनपुट अनुक्रमिक संख्या क्यों होनी चाहिए? –
@ थॉमसएम। डूबुइसन अगर वे $ 2 प्रत्येक के लिए 2^36 लाइसेंस बेचते हैं, तो यह न्यूजीलैंड का सकल घरेलू उत्पाद है। मुझे लगता है कि वे थोड़ी देर के लिए सुरक्षित हैं। –