2008-11-03 9 views
14

मैं एक लाइसेंस कुंजी बनाना चाहता हूं, जो आप क्रिप्टोग्राफी एल्गोरिदम की सिफारिश करेंगे?.NET क्रिप्टोग्राफी?

मूल रूप से आदानों होगा:

कंपनी का नाम
प्रमुख संस्करण संख्या
तारीख
expirey तारीख
बनाया feature1 है:
feature2 है:
feature3 है:

उदाहरण एक्मे इंक 5,0 20081102 20081102 0 1 0

संबंधित: Which built-in .NET cryptography algorithm is the most secure?

+0

SO: http://stackoverflow.com/questions/79064/cryptography-algorithm और http://stackoverflow.com/questions/179220/best-cryptography-algorithm और http: // stackoverflow पर संबंधित प्रश्न हैं। कॉम/प्रश्न/258721/जो-निर्मित-नेट-क्रिप्टोग्राफी-एल्गोरिदम-सबसे-सुरक्षित –

+1

यह क्यों बंद हुआ था? अन्य प्रश्न इसका उत्तर नहीं देते हैं और ASDFdotASPX का अन्य प्रश्न अधिक सामान्य था। –

+0

फिर से खोला गया। यह मेरे द्वारा प्रदान किए गए लिंक के समान है, लेकिन डुप्लिकेट नहीं है। –

उत्तर

7

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

यदि आप सत्यापन सर्वर-पक्ष कर रहे हैं, तो मैं एक SHA-256 आधारित एचएमएसी चुनूंगा।

10

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

+0

हा, हा, हे, "*** बहुत आसान ** डिकंपाइल करने के लिए और केवल एप्लिकेशन को सत्यापन चरण छोड़ दें *। चूंकि यह बहुत आसान है, आगे बढ़ें, हमें एचपी लोडरुनर का नवीनतम संस्करण, या [बुर्प सूट] (https://portswigger.net/burp/download.html) का नवीनतम संस्करण क्रैक करें और हमें दिखाएं कि यह ** बहुत आसान है * * ऐसा करने के लिए। सबूत के रूप में एक ब्लॉगपोस्ट पर्याप्त होगा, उदाहरण के लिए [यहां Burp Suite के एक (बहुत पुराने संस्करण) के लिए एक है (http://blog.nibblesec.org/2013/01/anti-debugging-techniques-and-burp-suite .html)। ** वास्तविक ** प्रश्न यह है कि, आपने कितने मूल्यवान कार्यक्रमों को इंजीनियर किया है? – Pacerier

+0

"* ईमानदार लोगों को ईमानदार रखने के लिए सीरियल कुंजी हैं .. *" ** गलत **। ईमानदार लोगों को ईमानदार होने के लिए धारावाहिक कुंजी की आवश्यकता नहीं होती है, एक संदेश जैसे "इस सुविधा का उपयोग न करें जब तक कि आप मुझे पहले भुगतान न करें" पर्याप्त होगा। ** बेईमान लोगों को ईमानदार रखने के लिए सीरियल कुंजी हैं। ** बेईमानी, लेकिन * सस्ता *। [सुरक्षा एक अर्थशास्त्र समस्या है] (https://www.google.com/search?q=economics+of+security) पहले, फिर तकनीकी समस्या दूसरी। – Pacerier

0

यदि आप ट्रिपल डीईएस एन्क्रिप्शन का एक उदाहरण देखना चाहते हैं, तो आप डेटाबेस में डेटा एन्क्रिप्ट करने पर my blog post पर एक नज़र डाल सकते हैं।

ब्लॉग पोस्ट में एक वीडियो और स्रोत कोड शामिल है।

हालांकि यह डेटाबेस में स्ट्रिंग कॉलम एन्क्रिप्ट करने पर केंद्रित है, लेकिन आप इसे निश्चित रूप से लाइसेंसिंग फ़ील्ड के साथ काम करने के लिए संशोधित कर सकते हैं।

स्रोत कोड सी # में लिखा गया है और ट्रिपल डीईएस एल्गोरिदम का उपयोग करता है।
नहीं: 1:

1

आप 4 काम करने होंगे - MD5 संदर्भ encryptedly
प्रारंभ करने की आवश्यकता है - अपने आवेदन (MD5, कस्टम md5 संदर्भ के साथ) Checksum
के खिलाफ निजी/सार्वजनिक कुंजी एन्क्रिप्टेड checksum तुलना करें
कोई 2: Checksum अपने चल रहे आवेदन के पाठ खंड
कोई 3: किसी भी महत्वपूर्ण तार एन्क्रिप्ट, "गलत कुंजी" या "कुंजी ठीक है"

की तरह: लाइसेंस
कोई 4 के लिए उपयोग 4096-बिट आरएसए निजी-सार्वजनिक कुंजी एनक्रिप्टिंग
+0

एमडी 5 एक टूटा हुआ हैश एल्गोरिदम है और इसका उपयोग नहीं किया जाना चाहिए – Nayef

3

लाइसेंस कुंजी के लिए आप इसे एन्क्रिप्ट करने में बहुत रुचि नहीं रखते हैं, लेकिन इसे हस्ताक्षर करने पर। इसे हस्ताक्षर करके आप मान्य कर सकते हैं कि समाप्ति तिथि और सक्षम सुविधा सूची tampered के साथ नहीं थी।लाइसेंस कुंजी को छुपाने (एन्क्रिप्ट) करने की कोई आवश्यकता नहीं है, क्योंकि अंतिम उपयोगकर्ता से लाइसेंस छिपाने से कोई कमी नहीं है।

क्रिप्टोग्राफिक हस्ताक्षर लाइसेंस को हैश करके और फिर एक निजी कुंजी के साथ हैश को एन्क्रिप्ट करके किया जाता है। चूंकि कोई भी संबंधित सार्वजनिक कुंजी का उपयोग करके उस हैश को डिक्रिप्ट कर सकता है, इसलिए कोई भी यह सत्यापित कर सकता है कि लाइसेंस किस प्रकार छेड़छाड़ कर रहा था।

हस्ताक्षर और सत्यापन करने के लिए मूल CryptoAPI फ़ंक्शन CryptSignHash और CryptVerifySignature हैं, Example C Program: Signing a Hash and Verifying the Hash Signature देखें।

नेट फ्रेमवर्क समकक्ष RSAPKCS1SignatureFormatter और RSAPKCS1SignatureDeformatter कक्षाएं हैं।

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