मैं openssl
उपयोगिता का उपयोग करना पसंद करूंगा क्योंकि यह काफी सर्वव्यापी लगता है।
RSA सार्वजनिक कुंजी और निजी कुंजी को PEM प्रारूप में रूपांतरित करें:
$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem
अपनी सार्वजनिक कुंजी के साथ फ़ाइल एन्क्रिप्ट करना:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
फ़ाइल को अपनी निजी कुंजी के साथ डिक्रिप्ट करना:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
लेकिन, जैसा कि ऊपर गिल्स ने कहा, यह केवल आपकी सार्वजनिक कुंजी से छोटी फ़ाइलों को एन्क्रिप्ट करने के लिए उपयुक्त है, इसलिए आप ऐसा कुछ कर सकते हैं:
एक पासवर्ड बनाएं, इसे सममित रूप से फ़ाइल को एन्क्रिप्ट करें, और पासवर्ड को अपने सार्वजनिक, कुंजी को इसे फ़ाइल में सहेजने के साथ एन्क्रिप्ट करें:
$ openssl rand 64 |
tee >(openssl enc -aes-256-cbc -pass stdin -in file.txt -out file.enc) |
openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -out file.enc.key
पासफ़्रेज़ को अपनी निजी कुंजी के साथ डिक्रिप्ट करें और फ़ाइल को डिक्रिप्ट करने के लिए इसका उपयोग करें:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc.key |
openssl enc -aes-256-cbc -pass stdin -d -in file.enc -out file.txt
आप दो फ़ाइलों, अपनी एन्क्रिप्टेड फ़ाइल और अपने एन्क्रिप्टेड पासफ़्रेज़ के साथ समाप्त हो जाएंगे, लेकिन एक स्क्रिप्ट में इसे अच्छी तरह से काम करेंगे।
तुम भी tar cvf file file.enc file.enc.key
साफ करने के लिए जोड़ सकते हैं ।
वैकल्पिक रूप से, आप अपने पासफ़्रेज़ के आकार को अधिकतम करने के साथ-साथ rand 64
अपनी सार्वजनिक कुंजी के आकार में भी परिवर्तन करेंगे ।