'सार्वजनिक कुंजी टोकन' क्या है और इसकी गणना असेंबली मजबूत नामों में कैसे की जाती है?सार्वजनिक कुंजी टोकन क्या है और इसे असेंबली मजबूत नामों में कैसे गणना की जाती है?
उत्तर
आपके प्रश्न के संबंध में, "इसकी गणना कैसे की जाती है", यह एक SHA1 हैश है।
dot net blog से:
माइक्रोसॉफ्ट दृढ़ता से नाम विधानसभा की सार्वजनिक कुंजी के हैश का उपयोग करके "सार्वजनिक कुंजी ब्लोट" समस्या का हल। इन हैंश को सार्वजनिक कुंजी टोकन के रूप में जाना जाता है, और के निम्न 8 बाइट्स दृढ़ता से नामित असेंबली की सार्वजनिक कुंजी के SHA1 हैश हैं। SHA1 हैश 160 बिट (20 बाइट) हैश, और शीर्ष हैश के 12 बाइट बस इस एल्गोरिदम में छोड़े गए हैं।
यह असेंबली पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कुंजी के हैश बाइट्स है।
तो कुंजी के लिए सैकड़ों हेक्स अंकों को सूचीबद्ध करने के बजाय, आपके पास कुछ आसान है, लेकिन अभी भी टकराव के छोटे जोखिम के साथ।
वास्तव में यह कुंजी से हैश है, पूंछ नहीं बाइट्स। और असली चाबियाँ दर्जनों बाइट्स हैं, सैकड़ों नहीं। –
फिक्स्ड हैश (धन्यवाद)। डिफ़ॉल्ट कुंजी 1024 या 512 काटने वाली है, जिसे 256 या 128 हेक्स अंकों की आवश्यकता होगी, जो कि (केवल :-)) सैकड़ों हैं। – Richard
एक सार्वजनिक कुंजी टोकन का उपयोग दृढ़ता से नामित असेंबली में संगठन की पहचान के लिए किया जाता है। यह जानकारी असेंबली मेटाबेस में जोड़ दी गई है। मुझे लगता है कि रिचर्ड इसे संग्रहीत तकनीकी तरीके के बारे में सही है।
यदि आप किसी असेंबली के मेटाबेस को देखना चाहते हैं, तो ILDASM का उपयोग करें। आईएल देखने के अलावा मेटाबेस में संग्रहीत किए गए चीज़ों में आप ड्रिल कर सकते हैं।
ECMA-335 से:
इस घोषणा नहीं बल्कि पूर्ण सार्वजनिक कुंजी से, विधानसभा संदर्भ में प्रवर्तक की सार्वजनिक कुंजी के SHA-1 हैश की कम 8 बाइट्स स्टोर करने के लिए प्रयोग किया जाता है ।
एक असेंबली संदर्भ या तो पूर्ण सार्वजनिक कुंजी या 8-बाइट "सार्वजनिक कुंजी टोकन" स्टोर कर सकता है। या तो पर उपयोग किया जा सकता है यह सत्यापित करता है कि संकलन समय पर असेंबली पर हस्ताक्षर करने के लिए उपयोग की जाने वाली वही निजी कुंजी भी पर उपयोग की गई असेंबली पर हस्ताक्षर करती है क्रम। न तो उपस्थित होना आवश्यक है, और दोनों को संग्रहीत किया जा सकता है, यह उपयोगी नहीं है।[दलील: सार्वजनिक कुंजी या सार्वजनिक कुंजी टोकन एक विधानसभा संदर्भ में जमा हो यह सुनिश्चित करें कि विधानसभा कब्जे में निजी कुंजी की में जिक्र किया गया और एक इकाई द्वारा वास्तव में कार्यावधि में इस्तेमाल किया विधानसभा का उत्पादन किया गया जा रहा है प्रयोग किया जाता है, और इसलिए माना जा सकता है कि एक ही उद्देश्य के लिए किया गया है। जबकि पूर्ण सार्वजनिक कुंजी क्रिप्टोग्राफ़िक रूप से सुरक्षित है, इसके संदर्भ में इसे अधिक संग्रहण की आवश्यकता है। सार्वजनिक कुंजी टोकन का उपयोग केवल संदर्भ प्रक्रिया को कमजोर करते हुए संदर्भ को संग्रहीत करने के लिए आवश्यक स्थान को कम करता है। अंत औचित्य]
कैसे हैश गणना की जाती है का सवाल है (मुझे लगता है यह हो सकता है के बाद से सार्वजनिक कुंजी टोकन "गणना" नहीं है कि तुम क्या कह रहे हैं), एक ही कल्पना से:
सीएलआई मेटाडाटा एक असेंबली के निर्माता को उस असेंबली के क्रिप्टोग्राफिक हैश की गणना करने की अनुमति देता है ( SHA-1 हैश फ़ंक्शन का उपयोग करके) और उसके बाद आरएसए एल्गोरिदम (विभाजन I देखें) और सार्वजनिक/निजी कुंजी जोड़ी का उपयोग करके इसे एन्क्रिप्ट करने की अनुमति देता है निर्माता के चयन का। इसके परिणाम (एक "SHA-1/RSA डिजिटल हस्ताक्षर") को मेटाडेटा (§25.3.3) में को आरएसए एल्गोरिदम द्वारा आवश्यक कुंजी जोड़ी के सार्वजनिक भाग के साथ संग्रहीत किया जा सकता है। .publickey निर्देश का उपयोग सार्वजनिक कुंजी निर्दिष्ट करने के लिए किया जाता है जिसका उपयोग हस्ताक्षर की गणना करने के लिए किया गया था। हैश की गणना करने के लिए, हस्ताक्षर शून्य हो गया है, हैश की गणना की गई है, और उसके बाद परिणाम हस्ताक्षर में संग्रहीत किया जाता है।
मजबूत नाम (एसएन) हस्ताक्षर प्रक्रिया मजबूत नाम हस्ताक्षर के लिए मानक हैश और साइफर एल्गोरिदम का उपयोग करती है। पीई फ़ाइल में से अधिकांश पर SHA-1 हैश उत्पन्न होता है। उस हैश मान एसएनए निजी कुंजी के साथ आरएसए-हस्ताक्षरित है। सत्यापन उद्देश्यों के लिए सार्वजनिक कुंजी पीई फ़ाइल के साथ-साथ हस्ताक्षरित हैश मान में संग्रहीत की जाती है।
निम्नलिखित के अलावा, पीई फ़ाइल के सभी हिस्सों को धोया गया है: • प्रमाणीकरण हस्ताक्षर प्रविष्टि: पीई फाइलें प्रमाणीकृत हो सकती हैं। प्रामाणिकोड हस्ताक्षर पीई हेडर डेटा निर्देशिका ("§25.2.3.3 में" प्रमाणपत्र तालिका ") और पीई फ़ाइल की सामग्री निर्देशिका प्रविष्टि द्वारा निर्दिष्ट सीमा में 8-बाइट प्रविष्टि में 8-बाइट प्रविष्टि में निहित है। [नोट: एक अनुरूप पीई फ़ाइल में, यह प्रविष्टि शून्य होगी। अंत नोट] • मजबूत नाम ब्लॉब: सीआईएल हेडर के ऑफसेट 32 ("स्ट्रॉन्गनाम सिग्नेचर" §25.3.3 में ऑफसेट 32) और पीई फ़ाइल में इस आरवीए में मौजूद हैश डेटा की सामग्री पर 8-बाइट एंट्री। यदि 8-बाइट प्रविष्टि 0 है, तो कोई मजबूत नाम हस्ताक्षर नहीं है। • पीई हेडर चेकसम: पीई हेडर विंडोज एनटी-विशिष्ट फ़ील्ड्स (§25.2.3.2 में "फाइल चेकसम") के ऑफसेट 64 पर 4-बाइट एंट्री। [नोट: एक अनुरूप पीई फ़ाइल में, यह प्रविष्टि शून्य होगी। अंत टिप्पणी]
आप मुक्त करने के लिए यहाँ कल्पना डाउनलोड कर सकते हैं: http://www.ecma-international.org/publications/standards/Ecma-335.htm
आप एक पूर्ण सार्वजनिक कुंजी के आधार पर एक सार्वजनिक कुंजी टोकन उत्पन्न करने के लिए की जरूरत है, इस छोटे से स्थिर विधि काम करता है:
private static byte[] GetKeyTokenFromFullKey(byte[] fullKey)
{
SHA1CryptoServiceProvider csp = new SHA1CryptoServiceProvider();
byte[] hash = csp.ComputeHash(fullKey);
byte[] token = new byte[8];
for (int i = 0; i < 8; i++)
token[i] = hash[hash.Length - (i+1)];
return token;
}
आप टाइप करके वी.एस. कमांड लाइन से PublicKeyToken प्राप्त कर सकते हैं:
sn –T DLLName.dll
+1, (नया?) वाक्यविन्यास 'sn -q -T DLLName.dll' है। –
- 1. जीएसी में समान नाम, संस्करण और सार्वजनिक कुंजी टोकन
- 2. घाटे की गणना कैसे की जाती है?
- 3. GetBBox() SVGRect की गणना कैसे की जाती है?
- 4. क्या सार्वजनिक कुंजी और निजी कुंजी अदला-बदली है?
- 5. संदर्भ दो बराबर असेंबली, केवल सार्वजनिक कुंजी
- 6. पेजरैंक को वितरित तरीके से कैसे गणना की जाती है?
- 7. क्या मुझे .snk फ़ाइल से सार्वजनिक कुंजी प्रकाशित करने की आवश्यकता है?
- 8. क्रोम देव उपकरण में कस्टम कक्षाओं के लिए जावास्क्रिप्ट क्लास नामों की गणना कैसे की जाती है?
- 9. क्या [एनएसएसटींग हैश] हर बार गणना की जाती है?
- 10. AdMob कमाई - उनकी गणना कैसे की जाती है
- 11. सार्वजनिक कुंजी क्रिप्टोग्राफी कैसे काम करता है
- 12. "सार्वजनिक/संरक्षित/निजी" विधि कैसे कार्यान्वित की जाती है, और मैं इसे कैसे अनुकरण कर सकता हूं?
- 13. मुझे असेंबली का मजबूत नाम कैसे मिल सकता है?
- 14. .NET रनटाइम गैर-मजबूत नामांकित 'असेंबली कैसे ढूंढता है?
- 15. एक्सएनए कुंजी गणना में बैकटिक (`) कुंजी का नाम क्या है?
- 16. मजबूत नाम कुंजी पासवर्ड कहाँ संग्रहीत किया जाता है?
- 17. अलग-अलग सार्वजनिक कुंजी टोकन के साथ नेट असेंबली बाइंडिंग रीडायरेक्ट
- 18. सी # - क्या आप एक मजबूत नामित असेंबली
- 19. एनएसएआरएआरई और तेज गणना, हमेशा इंडेक्स ऑर्डर में जाती है?
- 20. ओपन-सोर्स प्रोजेक्ट के लिए मजबूत-नाम कुंजी जोड़ी को प्रबंधित करने का अनुशंसित तरीका क्या है?
- 21. जावास्क्रिप्ट str.length प्रत्येक बार इसे कॉल या सिर्फ एक बार गणना की जाती है?
- 22. निर्भरता संपत्ति कैसे लागू की जाती है?
- 23. एस 3 (अमेज़ॅन सरल संग्रहण प्रणाली) भंडारण की कीमतों की गणना कैसे की जाती है?
- 24. सी # असेंबली, असेंबली में क्या है?
- 25. क्या यह एसएएमएल को साइन और एन्क्रिप्ट करने और एसएसएल का उपयोग करने की अनुशंसा की जाती है?
- 26. सार्वजनिक और निजी कुंजी कैसे भिन्न हैं?
- 27. कोको के NSDictionary: कुंजी की प्रतिलिपि क्यों बनाई जाती है?
- 28. WPF विंडो में "Esc" कुंजी कैसे संभाली जाती है?
- 29. परियोजना में 'मजबूत नाम कुंजी फ़ाइल' की प्रतिलिपि क्यों बनाई गई है?
- 30. नोटिफ़िकॉन की गारंटी कैसे दी जाती है?
भी देखें http: // stackoverf low.com/q/1321419/284795 –
सार्वजनिक कुंजी एक कुंजी है जो निजी कुंजी से मेल खाती है (जो बदले में असेंबली पर हस्ताक्षर करने के लिए उपयोग की जाती है)। [मजबूत नामांकित असेंबली] पर एक नज़र डालें (https://msdn.microsoft.com/en-us/library/wd40t7ad (v = vs.110) .aspx) – Lu55