2012-07-18 19 views
5

से आरएसए सार्वजनिक कुंजी बनाना मैं आरएसए हस्ताक्षर को सत्यापित करना चाहता हूं। मेरे पास डेटाुलस और एक्सपोनेंट के रूप में सत्यापित करने के लिए डेटा, हस्ताक्षर और सार्वजनिक कुंजी है। मैं openssl का उपयोग कर सत्यापन करना चाहता हूं। क्या यह संभव है? मुझे पता है कि मैं openssl rsautl -verify -in sig -inkey key.pem का उपयोग कर सकता हूं लेकिन मुझे नहीं पता कि (ओपनएसएल का उपयोग करके) सार्वजनिक कुंजी बनाने के लिए बस यह मॉड्यूलस और एक्सपोनेंट है।अपने मॉड्यूलस और एक्सपोनेंट

शायद अन्य विचार इस हस्ताक्षर को कैसे जांचें (कुछ कार्यक्रम लिखने के अलावा)?

+1

"... कुछ लिखने को छोड़कर उपयोग कर सकते हैं कार्यक्रम ... "ठीक है अगर आप [एफएक्यू] (http://stackoverflow.com/faq) पढ़ते हैं तो आप उसे जानते होंगे क्या stackoverflow के लिए है। –

+0

ग्रेग्स: यह ऐसा नहीं है :) मेरे पास प्रोग्राम है जो यह करता है लेकिन मेरा ग्राहक दावा करता है कि यह ठीक से काम नहीं करता है। तो उसे साबित करने के लिए कि वह गलत है, मैं यह दिखाना चाहता हूं कि उदाहरण के लिए openssl (जिसे वह भरोसा कर सकता है) मेरे कार्यक्रम की तरह व्यवहार करता है। – emstol

+0

क्या आप किसी दिए गए मॉड्यूलस और एक्सपोनेंट से आरएसए * संरचना चाहते हैं? – doptimusprime

उत्तर

-1

आदमी पृष्ठों की जांच कर आप देना चाहिए

# generate private key 
openssl genrsa > key.priv 

# use it to sign something 
echo "Dirk should be given $10" | openssl rsautl -inkey key.priv -sign > msg.sig 

# create a pub key (modules, exp) from the private key 
openssl rsa -pubout <key.priv> key.pub 

# use that to verify the signature. 
openssl rsautl -in msg.sig -verify -inkey key.pub -pubin 

नीचे यह सब यह सोचते हैं आप कच्चे कुंजी चाहते हैं। अगर मैं नीचे आपकी टिप्पणी को सही समझता हूं - ऐसा लगता है कि आपके पास सामान्य प्रारूप में मॉड्यूल/एक्सप नहीं है। तो आपको सामान्य उपकरण के साथ इसका उपयोग करने के लिए इसे पहले ASN.1 में पैकेज करना होगा।

इसके लिए आपको कुछ सी/जावा/आदि कोड लिखना होगा। ऐसा करने का एक आसान तरीका openssl लाइब्रेरी का उपयोग करना है; और आरएसए * संरचना भरें।

+1

मुझे नहीं लगता कि यह मेरी समस्या का हल कैसे करता है। मेरे पास केवल दो संख्याएं हैं: एक मॉड्यूलस और एक एक्सपोनेंट।और मैं उन फाइलों के आधार पर बनाई गई एक सार्वजनिक कुंजी युक्त एक फ़ाइल key.pub बनाना चाहता हूं। और कुछ नहीं। मैंने बहुत समय पहले इस सवाल से पूछा था और अभी भी यह नहीं पता कि यह कैसे करें। – emstol

+0

मान लें कि आपके पास सामान्य बीईआर पैकेजिंग में मॉड्यूल और एक्सपोनेंट नहीं है - आपको इसे पैकेज करने के लिए कुछ ASN.1 पैकेजिंग लिखनी होगी। –

4

openssl के साथ उपयोग किए जाने वाले पीईएम प्रारूप में आरएसए पबलिक कुंजी उत्पन्न करने के लिए, आप इन चरणों का पालन कर सकते हैं।

एक ASN1 परिभाषा फ़ाइल

अपने मापांक शामिल हैं और प्रतिपादक

# Start with a SEQUENCE 
asn1=SEQUENCE:pubkeyinfo 

# pubkeyinfo contains an algorithm identifier and the public key wrapped 
# in a BIT STRING 
[pubkeyinfo] 
algorithm=SEQUENCE:rsa_alg 
pubkey=BITWRAP,SEQUENCE:rsapubkey 

# algorithm ID for RSA is just an OID and a NULL 
[rsa_alg] 
algorithm=OID:rsaEncryption 
parameter=NULL 

# Actual public key: modulus and exponent 
[rsapubkey] 
n=INTEGER:0x%%MODULUS%% 

e=INTEGER:0x%%EXPONENT%% 
संपादन के बजाय

को संशोधित निम्नलिखित टेम्पलेट बनाएँ, आप भी स्क्रिप्ट इस sed का उपयोग कर सकते हैं

sed -i "s/%%MODULUS%%/$(xxd -ps -c 256 mymodulus.bin)/" def.asn1 

नोट -c 256 होना चाहिए बाइट्स में अपनी मुख्य लंबाई के अनुसार चुना गया।

आप एक्सपोनेंट के लिए एक समान कमांड का उपयोग कर सकते हैं।

अपने RSA कुंजी

उपयोग निम्नलिखित openssl आदेश उत्पन्न करें। यह आपको एक डीईआर एन्कोडेड आरएसए कुंजी देगा।

openssl asn1parse -genconf def.asn1 -out pubkey.der -noout 

तो यह एक पीईएम कुंजी में तब्दील

openssl rsa -in pubkey.der -inform der -pubin -out pubkey.pem 

का उपयोग करके सत्यापित अपने प्रमुख

आप या तो openssl dgst -verify या openssl rsautl -verify

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