2011-05-12 21 views
10

मॉड्यूलस प्रमुख शून्यों के साथ क्यों गद्दीदार है? मैं पीकेसीएस # 1 और पीकेसीएस # 8 पढ़ रहा था लेकिन इसके बारे में कुछ भी नहीं मिला। सी # में प्रमुख शून्य हटा दिए जाने चाहिए, क्या किसी को पता है क्यों?एएसएन.1 डीईआर ने निजी कुंजी

http://etherhack.co.uk/asymmetric/docs/rsa_key_breakdown.html पर, आप देख सकते हैं कि मॉड्यूलस और एक्सपोनेंट के पास शून्य शून्य है। सवाल यह है कि उनके पास क्यों है, मुझे अभी तक कोई स्पष्टीकरण नहीं मिला है।

उत्तर

18

निजी कुंजी मान ASN.1 INTEGERs के रूप में एन्कोड किए गए हैं, जो दो के पूरक प्रारूप में मूल्यों पर हस्ताक्षर किए गए हैं। अग्रणी शून्य बाइट आवश्यक है जब एमएसबी (हस्ताक्षरित) आरएसए कुंजी मान सेट किया गया है। एक अग्रणी शून्य बाइट के बिना एमएसबी सेट होने का मतलब नकारात्मक मूल्य होगा।

ASN.1 चश्मा मुक्त हैं और Wikipedia से जुड़े हुए हैं। यहां प्रासंगिक अनुभाग X.690 में है, "एक पूर्णांक मान का 8.3 एन्कोडिंग"।

लिंक किए गए पृष्ठ को दूर करने के मामले में मैं यहां एक उदाहरण प्रदान करूंगा।

openssl genrsa -out test.pem 512 
openssl rsa -in test.pem -out test.der -outform der 

यहाँ test.der से नमूना डेटा:

आप openssl है, तो आप के साथ परीक्षण कुंजी उत्पन्न कर सकते हैं

30 82 01 3b
ASN.1 अनुक्रम, लंबाई 0x13b, सामग्री

का पालन करें

02 01 00
संस्करण: ASN.1 INTEGER, संग्रहित लंबाई 1, मान 0

02 41 00 c0 8e ... (65 डेटा बाइट्स)
मापांक: ASN.1 पूर्णांक, संग्रहीत लंबाई 65, मूल्य 0xc08e ... (शून्य बाइट प्रमुख की आवश्यकता है क्योंकि मापांक है> 2^511)

02 03 01 00 01
सार्वजनिक प्रतिपादक: 0x10001 (शून्य बाइट की आवश्यकता नहीं है क्योंकि प्रमुख प्रतिपादक < 2^23 है)

02 41 00 b5 87 ... (65 डेटा बाइट्स)
निजी प्रतिपादक: 0xb587 ...

02 21 00 e7 18 ... (33 डेटा बाइट्स)
prime1: 0xe718 ...

02 21 00 d5 43 ... (33 डेटा बाइट्स)
prime2: 0xd543 ...

02 20 75 67 a1 ... (32 डेटा बाइट्स)
exponent1: 0x7567 ... (आगे शून्य बाइट की आवश्यकता नहीं है क्योंकि प्रतिपादक < 2^255 है)

02 20 0a f6 3f ... (32 डेटा बाइट्स)
exponent2: 0x0af6 ...

02 21 00 c7 13 ... (33 डेटा बाइट्स)
गुणांक: 0xc713 ...

+0

आपका जवाब बहुत अच्छी तरह से समझाया गया है। स्पष्टीकरण का प्रदर्शन करने के लिए openssl का उपयोग सहायक था। –

+0

ध्यान दें कि पूर्णांक ASN.1 DER नमूने को openssl के साथ अच्छी तरह से उत्पन्न किया जा सकता है, उदा।: 'x = 128; openssl asn1parse -genstr "INTEGER: $ x" - डेटा के बाहर और हेक्सडम्प-सी डेटा' – mykhal

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