2012-07-02 15 views
6

लंबी कहानी छोटी, मेरा प्रश्न है: मैं जीएनयूपीजी को कैसे सक्रिय कर सकता हूं जो फ़ाइलों को एन्क्रिप्ट/डिक्रिप्ट करते समय उपयोग करने के लिए निजी/सार्वजनिक कुंजी?GnuPG: किसी निश्चित कुंजी का उपयोग करके फ़ाइलों को एन्क्रिप्ट/डिक्रिप्ट कैसे करें?


कुछ स्पष्टीकरण/लंबी कहानी

मैं एक आवेदन है कि उन्हें S3 को भेजने से पहले फ़ाइलें एन्क्रिप्ट करना चाहिए।

उपयोगकर्ता अपनी वेबसाइट से अपने ब्राउज़र का उपयोग करके अपनी फाइलें डाउनलोड कर सकते हैं, इस मामले में मुझे पहले उनकी सेवा करने से पहले फ़ाइलों को डिक्रिप्ट करना होगा।

क्लाइंट साइड (डेल्फी 2010): मैं सबसे अधिक संभावना OpenPGPBlackbox

सर्वर साइड (PHP 5) के लिए चुनते करने जा रहा हूँ, मैं यह पता लगाने की कैसे एन्क्रिप्ट/गैर-सहभागी आदेशों के साथ फ़ाइलों को डिक्रिप्ट करने की जरूरत है ।

मैं अपने सर्वर पर GnuPG स्थापित है, इस कोड की कोशिश की:

clear_file='/full/path/my-file.zip' 
encrypted_file='/full/path/my-file.zip.pgp' 

# Encrypt file 
/usr/bin/gpg2 --encrypt "$clear_file" 

# Decrypt file 
/usr/bin/gpg2 --decrypt "$encrypted_file" 

लेकिन ऐसा लगता है कि मैं कमांडलाइन, जो कुंजी का उपयोग करने के लिए निर्दिष्ट नहीं कर सकते।

प्रत्येक उपयोगकर्ता की अपनी सार्वजनिक/निजी कुंजी होगी, इसलिए मुझे यह निर्दिष्ट करने में सक्षम होना चाहिए कि फ़ाइल को एन्क्रिप्ट/डिक्रिप्ट करने के लिए किस कुंजी का उपयोग करना है।

मेरा प्रश्न है: मैं जीएनयूपीजी को कैसे सक्रिय कर सकता हूं जो फ़ाइलों को एन्क्रिप्ट/डिक्रिप्ट करते समय उपयोग करने के लिए निजी/सार्वजनिक कुंजी?

उत्तर

7

विकल्प आप के लिए देख रहे हैं:

--default-key $name$ 
      Use $name$ as the default key to sign with. If this option is not used, the default key is 
      the first key found in the secret keyring. Note that -u or --local-user overrides this 
      option. 
--local-user $name$ 
    -u  Use $name$ as the key to sign with. Note that this option overrides --default-key. 

या संभवतः:

--recipient $name$ 
    -r  Encrypt for user id $name$. If this option or --hidden-recipient is not specified, 
      GnuPG asks for the user-id unless --default-recipient is given. 
--default-recipient $name$ 
      Use $name$ as default recipient if option --recipient is not used and don't ask if 
      this is a valid one. $name$ must be non-empty. 

ये जो निर्दिष्ट करने के लिए इस्तेमाल किया जा सकता है इच्छित प्राप्तकर्ता, उदा हस्ताक्षर/एन्क्रिप्शन के लिए उपयोग करने के लिए कौन सी सार्वजनिक कुंजी। फ़ाइलों को डिक्रिप्ट करते समय जीएनयूपीजी स्वचालित कुंजीिंग में स्वचालित रूप से सही कुंजी का चयन करता है, जिसे --keyring विकल्प के साथ चुना जा सकता है, यदि एकाधिक मौजूद हैं। यदि वे वहां उपलब्ध हैं तो एक चाबर्वर से जरूरी चाबियाँ लाने के लिए जीएनयूपीजी को भी कॉन्फ़िगर किया जा सकता है।

आपको विकल्प --batch में भी रुचि हो सकती है जो सुनिश्चित करता है कि निष्कर्ष के दौरान कोई इंटरैक्टिव प्रश्न नहीं पूछा जाता है।

मेरा सुझाव है कि आप जीएनयूपीजी मैन पेज के माध्यम से पढ़ लें। ऐसे कई विकल्प हैं जो अब और फिर उपयोगी हो सकते हैं।

+0

धन्यवाद, हाँ मैंने मैन पेज पढ़ा है (और ** ** खो गया है)। मैंने इस आदेश को आजमाया: '/ usr/bin/gpg2 -v --decrypt --default-key" private-1.pgp "/ full/home/my-file.7z.pgp' लेकिन मुझे यह 'gpg: public मिला कुंजी 745ECDED gpg: आरएसए कुंजी के साथ एन्क्रिप्टेड, आईडी 745ECDED जीपीजी: डिक्रिप्शन विफल: कोई गुप्त कुंजी नहीं ... कृपया एक उदाहरण कमांड साझा करने की देखभाल करें? अग्रिम में धन्यवाद! – TheDude

+0

मैंने '--local-user' स्विच का उपयोग किया और निजी कुंजी फ़ाइल के लिए पूर्ण पथ का उपयोग किया, लेकिन यह – TheDude

+1

की सहायता नहीं करता है यह हो सकता है कि कीरिंग में कुंजी नहीं मिलती है। मुझे पूरी तरह से यकीन नहीं है कि अगर आप उस तरह से कुंजी दे सकते हैं। 'Gpg --allow-secret-key-import --import private-1.pgp' के साथ कुंजी अंगूठी पर पहली बार आयात करने का प्रयास करें और फिर इसके साथ डिक्रिप्ट करें: 'gpg --decrypt my-file.7z.pgp'।यदि यह काम नहीं कर रहा है, तो कमांड लाइन से परीक्षण करें, php से नहीं, पर्यावरण चर के साथ समस्याओं को रद्द करने के लिए आदि। अन्य विकल्प यह है कि कुंजी फ़ाइल में कुछ गड़बड़ है। – Edu

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

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