निजी कुंजी मान 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 ...
आपका जवाब बहुत अच्छी तरह से समझाया गया है। स्पष्टीकरण का प्रदर्शन करने के लिए openssl का उपयोग सहायक था। –
ध्यान दें कि पूर्णांक ASN.1 DER नमूने को openssl के साथ अच्छी तरह से उत्पन्न किया जा सकता है, उदा।: 'x = 128; openssl asn1parse -genstr "INTEGER: $ x" - डेटा के बाहर और हेक्सडम्प-सी डेटा' – mykhal