जवाबों:
pkeyutl -sign
RSA कुंजी के साथ (और rsa_padding_mode
डिफ़ॉल्ट रूप से pkcs1
जिसका अर्थ विशेष रूप से pkcs1-v1_5 है) और -pkeyopt digest:$hash
rfc3447 के खंड 9.2 में EMSA-PKCS1-v1_5-ENCODE के 2-6 चरणों को करता है, फिर धारा 8.2 में RSASSA-PKCS1-v1_5-SIGN के चरण 2 को भरें। दूसरे शब्दों में, यह सब कुछ करता है लेकिन हैश डेटा (लेकिन यह इनपुट हैश की लंबाई की जांच करता है )। ध्यान दें कि यदि आपके द्वारा निर्दिष्ट हैश नाम आपके द्वारा उपयोग किए गए हैश से भिन्न है, तो परिणामस्वरूप हस्ताक्षर सही तरीके से सत्यापित नहीं होंगे।
rsautl -sign
(इसी तरह से डिफ़ॉल्ट) केवल 4-6 और स्टेप 2 करता है। दूसरे शब्दों में, यह ASN.1 को एल्गोरिथ्म एडिटर को कच्चे हैश में एन्कोडिंग में नहीं जोड़ता है, इसलिए आपको यह करने की आवश्यकता है कि यदि आप चाहते हैं कि आपके हस्ताक्षर समझे जाएं और स्वीकार किए जाएं। दूसरों के द्वारा। pkeyutl -sign
बिना -pkeyopt digest
भी ASN.1 एन्कोडिंग को छोड़ देता है।
पूर्णता के लिए, dgst -$hash -sign
या $hash -sign
RSA कुंजी के साथ इसका संक्षिप्त रूप संपूर्ण कार्य करता है: हैश, ASN.1 सांकेतिक शब्दों में बदलना, पैड 01FF..00, और मोडएक्सपी।