GnuPG का उपयोग करके फ़ाइल को डिक्रिप्ट करते समय निजी कुंजी कैसे निर्दिष्ट करें?


22

मैं GnuPG के साथ एक फ़ाइल को डिक्रिप्ट करने की कोशिश कर रहा हूं, लेकिन नीचे दिए गए कमांड का उपयोग करते समय:

gpg --decrypt filename.gpg

मुझे निम्न संदेश मिले:

gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key

मेरे पास पहले से ही निजी कुंजी है जिसके साथ फ़ाइल को एन्क्रिप्ट किया गया है, लेकिन मुझे यकीन नहीं है कि मैं इसे कैसे निर्दिष्ट कर सकता हूं। क्या इस कुंजी को इंगित करने के लिए डिक्रिप्शन करते समय मुझे कोई विकल्प शामिल हो सकता है?


1
क्या gpg --list-secret-keys 0x3662FD5Eछपता है?
जोनास Schäfer

नहीं, यह नहीं है। क्या मैं इसे जोड़ सकता हूं?

आपने निजी कुंजी कैसे प्राप्त की?
जोनास श्फर

यह आईडी वास्तव में क्या दर्शाता है?
निशांत

जवाबों:


17

मेरे पास पहले से ही निजी कुंजी है जिसके साथ फ़ाइल को एन्क्रिप्ट किया गया है, लेकिन मुझे यकीन नहीं है कि मैं इसे कैसे निर्दिष्ट कर सकता हूं।

मैं इसे समझता हूं "मुझे एक फाइल मिली है जिसमें निजी कुंजी है, लेकिन यह नहीं जानते कि इसका उपयोग करने के लिए GnuPG को कैसे बताया जाए"।

GnuPG को कुंजी (सार्वजनिक और निजी दोनों) की आवश्यकता होती है जिसे GnuPG कीरिंग में संग्रहीत किया जाता है। यह जितना आसान है

gpg --import [keyfile]

बाद में, आपको उस फ़ाइल को डिक्रिप्ट करने में सक्षम होना चाहिए जिस तरह से आपने पहले से ही कोशिश की थी।


5
तो क्या आपके पास कई कुंजी आयात होने के बाद कौन सी कुंजी डिक्रिप्ट करना है, यह जानने के लिए gpg काफी स्मार्ट है?
रोलरॉल

हाँ। आमतौर पर एन्क्रिप्ट की गई फ़ाइल में कुंजी को संदर्भित किया जाता है, यदि GnuPG सभी कुंजियों को आज़माती नहीं है।
जेन्स एराट

मैं प्रोग्रामर का उपयोग करता हूं और सैकड़ों निजी कुंजी के साथ कीरिंग करता हूं और उनमें से दर्जनों के साथ संदेश एन्क्रिप्ट किया जा सकता है। यह थोड़ा बेकार लगता है कि यह सिर्फ उन सभी को आज़माता है (वास्तव में यह दिए गए पासफ़्रेज़ का उपयोग करके उन सभी को अनलॉक करने की कोशिश करता है और पहला काम करता है)।
jlh

2
GnuPG केवल उन सभी को आज़माती है, अगर कुंजी भेजने वाले पार्टी द्वारा छिपाई गई थी। ऐसा लगता है कि आपका उपयोग मामला GnuPG के डिज़ाइन लक्ष्यों में से एक नहीं था। यदि आप सही निजी कुंजी जानते हैं, हालांकि यह एन्क्रिप्ट की गई फ़ाइल में संग्रहीत नहीं है, तो इसके बजाय एक ही निजी कुंजी के साथ अलग-अलग GnuPG होम डायरेक्टरी / कीरिंग के प्रबंधन पर विचार करें।
जेन्स एराट

हां, ऐसा लगता है कि मेरा उपयोग मामला gpg के लिए अच्छी तरह से अनुकूल नहीं है। पूर्णता के लिए यहां एक अधिक विस्तृत अवलोकन है: मेरी प्राप्तकर्ता आईडी छिपी नहीं हैं (-R का उपयोग नहीं कर रहे हैं), इसलिए gpg को पता है कि शायद एक दर्जन कुंजियों में से कौन सी कोशिश करनी चाहिए, इसे पूरे कीरिंग की कोशिश नहीं करनी है। हालाँकि, gpg नहीं जानता कि किस कुंजी के लिए मैंने पासफ़्रेज़ की आपूर्ति की है, इसलिए इसमें उन दर्जन कुंजियों को आज़माना पड़ता है, जो चीज़ों को काफी धीमा कर देती हैं।
jlh

6
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available

3
सुपरयूज़र में आपका स्वागत है, आपका सुझाव पहले से ही दूसरे उत्तर में है। आपको एक नया बनाने के बजाय उस उत्तर का उत्थान करना चाहिए। आपके पास अभी तक करने के लिए पर्याप्त प्रतिष्ठा नहीं है, जब तक आप नहीं करते तब तक प्रतीक्षा करें।
वेलास्टिमिल ओवसिक्क

2

आपको gpg डिक्रिप्ट कमांड में गुप्त कुंजी को स्पष्ट रूप से घोषित करने की आवश्यकता नहीं है। यदि कीपर- दोनों सार्वजनिक और निजी कुंजी- जैसे कि जेन्स राज्य होस्ट पर कीरिंग पर मौजूद हैं, जहां आप डिक्रिप्ट कर रहे हैं, जीपीजी स्वतः डिक्रिप्शन के लिए आवश्यक गुप्त कुंजी का निर्धारण करेगा और पासवर्ड चुनौती पेश करेगा।

हालांकि अगर आप सभी (गैर कैश्ड) कुंजी कोशिश करने के लिए (इच्छा हो सकता है आप कई कुंजी के साथ एन्क्रिप्टेड एक फ़ाइल का परीक्षण कर रहे , स्विच का उपयोग) --try-all-secretsइच्छा चक्र सभी गुप्त चाबियाँ के माध्यम से अपने बदले में उन्हें कोशिश कर कीरिंग पर। अर्थात:

gpg -d --try-all-secrets test-gpg.txt.asc

HTH- टेरेंस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.