2009-05-21 9 views
5

मैं अपने उत्पाद के बॉक्स में डालने के लिए एक अद्वितीय सीडी-कुंजी बनाने की कोशिश कर रहा हूं, जैसे मानक सॉफ़्टवेयर बॉक्स में पाए जाने वाले सामान्य सीडी-कुंजी जैसे उपयोगकर्ता उत्पाद पंजीकृत करने के लिए उपयोग करते हैं।सत्यापन के साथ अद्वितीय सीडी-की पीढ़ी के लिए एल्गोरिदम

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

एक आवश्यकता यह होगी कि सीडी-कीई की सूची पर्याप्त रूप से "फैल" होनी चाहिए ताकि कोई गलत सीडी-कुंजी दर्ज करने की कोई संभावना न हो और अभी भी इसे किसी और किट के लिए अनुमोदित किया गया है, जिससे दो किट मिलते हैं। इससे हमें देयता में हजारों डॉलर खर्च हो सकते हैं।

उदाहरण के लिए, यह नहीं संख्याओं की एक वृद्धिशील अनुक्रम ऐसे
... के रूप में हो सकता है
कारण है कि किसी को किट 00002 प्राप्त करता है, लेकिन द्वारा 000003 के रूप में यह पंजीकृत करता है, तो दुर्घटना, तो उसके परिणाम किसी और के साथ मेल खाते होंगे। तो यह क्रेडिट कार्ड नंबरों की तरह होना चाहिए ... जब तक एक वैध अनुक्रम दर्ज नहीं किया जाता है, तो आपके पास एक वैध संख्या को यादृच्छिक रूप से मारने की संभावना दस लाख में होती है ...

इसके अलावा, हम विभिन्न प्रदाताओं को सालाना 50,000 से अधिक किट बेच रहे हैं (जो हमारे एल्गोरिदम का उपयोग करके अपनी सीडी-कुंजी उत्पन्न करेंगे) ताकि हम डुप्लिकेट की जांच के लिए पहले जारी किए गए सभी सीडी-कुंजी की एक सूची बनाए रख सकें। एल्गोरिदम को अद्वितीय सीडी-कुंजी उत्पन्न करना होगा।

हमें यह सत्यापित करने की क्षमता की भी आवश्यकता है कि सीडी-कुंजी एक त्वरित चेक एल्गोरिदम का उपयोग करके मान्य है, ताकि हम उपयोगकर्ता को सूचित कर सकें कि कोड में प्रवेश करने वाला कोड अमान्य है। यह मुझे विश्वास है कि कई हैशिंग या एमडी 5 एल्गोरिदम छोड़ देता है। और यह 128 बिट नहीं हो सकता है, क्योंकि उस समय कंप्यूटर स्क्रीन पर इसे टाइप करने के लिए कौन ले जाएगा?

अभी तक यह है कि मैं क्या सोच रहा था अंतिम सीडी कुंजी संरचना कैसा दिखेगा है

(4 चार उत्पाद कोड) - (4 चार पुनर्विक्रेता कोड) - (12 चार अद्वितीय, सत्यापन योग्य सीडी कुंजी)

पूर्व। 384A - gTLD - {4565 - FR54 - EDF3}


KEYS की विशिष्टता सुनिश्चित करने के , मैं स्रोत के हिस्से के रूप में आज की तारीख (20,090,521) शामिल हो सकते हैं। हम सप्ताह में एक से अधिक बार अनन्य कुंजी उत्पन्न नहीं करेंगे, इसलिए यह मान अक्सर अद्वितीय प्रारंभिक मान के उद्देश्य के लिए पर्याप्त रूप से बदल जाता है।

अद्वितीय कुंजी उत्पन्न करने के लिए मैं क्या संभव एल्गोरिदम उपयोग कर सकता हूं?

+2

क्रिप्टोग्राफ़ी असुरक्षित है, अगर इसकी सुरक्षा केवल एल्गोरिदम में है, जो गुप्त में रखी जाती है। :) –

+0

अंतिम सीडी-कुंजी एक गुप्त कुंजी के साथ हैश प्रकार एल्गोरिदम का उपयोग करके एन्क्रिप्ट किया जाएगा। –

उत्तर

6

तार <providername>000001, <providername>000002, आदि या जो कुछ भी बना सकते हैं और उन्हें एक सार्वजनिक कुंजी के साथ एन्क्रिप्ट, और कहा कि अपने "सीडी-कुंजी" उपयोगकर्ता में प्रवेश करती है कि है। निजी कुंजी के साथ सीडी-कुंजी को डिक्रिप्ट करें और सत्यापित करें कि जब डिक्रिप्ट किया जाता है तो आपको वैध प्रदाता नाम के साथ एक वैध स्ट्रिंग मिलती है।

+0

धन्यवाद यह वही है जो मैं ढूंढ रहा था। –

+0

क्या आपका मतलब निजी कुंजी से एन्क्रिप्ट नहीं है, सार्वजनिक कुंजी के साथ डिक्रिप्ट करें? – Cam

+0

नहीं, वह सही ढंग से शर्तों का उपयोग कर रहा है। अपने उद्देश्यों के लिए, जब तक वह एन्क्रिप्शन करने के लिए दूसरे का उपयोग करता है, तब तक वह एन्क्रिप्शन करने के लिए निजी या सार्वजनिक कुंजी का उपयोग कर सकता है। सार्वजनिक/निजी कुंजी का उपयोग करते समय, यदि किसी एक समूह (एन्क्रिप्शन/डिक्रिप्शन) लोगों के समूह द्वारा किया जाना है, तो इसके लिए सार्वजनिक कुंजी का उपयोग किया जाता है। यह वह जगह है जहां से नाम प्राप्त होते हैं। इस मामले में, यह वास्तव में मेटर नहीं है जिसका उपयोग किया जाता है। – Walter

1

क्रेडिट कार्ड नंबर Luhn algorithm का उपयोग करते हैं, तो आप ऐसा कुछ भी देखना चाहते हैं।

+0

Verhoeff एल्गोरिदम संदर्भ वहाँ बहुत बेहतर दिखता है कि यह पारदर्शी त्रुटियों को पकड़ लेंगे। – JonnyBoats

1

मैं सॉफ़्टवेयर सुरक्षा के लिए SeriousBit Ellipter link का उपयोग करता हूं लेकिन मुझे कोई कारण नहीं दिखता है कि आप प्रत्येक सप्ताह अनन्य कुंजी का समूह उत्पन्न कर सकते हैं और हमें आपकी वेबसाइट में प्रवेश करते समय मुख्य वैधता सत्यापित करने के लिए लाइब्रेरी दिखाई दे सकती है। आप कुंजी में वैकल्पिक सेवाओं को एन्कोड भी कर सकते हैं ताकि आप यह नियंत्रित कर सकें कि नमूना को कुंजी से कैसे संसाधित किया जाता है (यदि आपके पास अलग-अलग सेवा स्तर हैं)।

चूंकि यह पहली जगह में मुख्य पीढ़ी की एन्क्रिप्टेड विधि का उपयोग करता है और यह अपेक्षाकृत सस्ता है, यह निश्चित रूप से एक लुक के लायक है।

+0

सुझाव के लिए धन्यवाद। मैंने निशान की कोशिश की और मैं थोड़ा निराश था। अगर मैं अंत 00001, 00002, आदि में सीरियल नंबर बदलता हूं तो सीडी-कुंजी में लौटने पर इसमें केवल 1 मान होता है। –

-1

GUID उत्पन्न करें और इसे यादृच्छिक संख्या दें। GUID को अद्वितीय होने की गारंटी दी जाती है और यादृच्छिक संख्या गलती से कोड को हिट करने के लिए असंभव बनाती है। बस किसी भी तरह से GUID को संशोधित न करें या आप विशिष्टता से समझौता कर सकते हैं।

http://msdn.microsoft.com/en-us/library/aa475087.aspx

+0

-1 GUID क्रिप्टोग्राफ़िक रूप से सुरक्षित नहीं हैं। कई कार्यान्वयनों में इसके निर्धारक भाग होते हैं, जैसे कि कंप्यूटर के मैक पते को शामिल करना। वास्तव में काम करने के लिए एक इंटरनेट कनेक्शन की आवश्यकता होगी। – Aron

1

मैं अंत में इस फार्म

<TIMESTAMP>-<incremented number>-<8 char MD5 hash>-<checksumdigit> 

की एक सीडी-कुंजी मैं आधुनिक 11 ISBN चेकसम अंकों एल्गोरिथ्म का इस्तेमाल किया के लिए बस गए।

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