मैं जल्दी से एईएस के साथ एक फ़ाइल को कैसे एन्क्रिप्ट कर सकता हूं?


81

मैं AES-256 का उपयोग करके किसी फ़ाइल को एन्क्रिप्ट करना चाहता हूं। मैं इसे जल्दी और आसानी से कैसे कर सकता हूं, और मैं कैसे कर सकता हूं - या किसी और को फिर से इसे एन्क्रिप्ट कर सकता हूं?

जवाबों:


86

दुर्भाग्य से, अपना सामान हासिल करने का कोई आसान उपाय नहीं है। अपने उपयोग के मामले के बारे में सोचें, शायद सादे एईएस के अलावा कुछ बेहतर अनुकूल है।


यदि आप बहुत ही सरल प्लेटफ़ॉर्म स्वतंत्र एन्क्रिप्शन चाहते हैं, तो आप ओपनसेल का उपयोग कर सकते हैं ।

कृपया ध्यान दें: आप अपने रूममेट से जन्मदिन-उपहार-विचारों को छिपाने के लिए इसका उपयोग कर सकते हैं, लेकिन यह निर्धारित हमलावर के खिलाफ सुरक्षित होने की उम्मीद न करें!

  1. जैसा कि टिप्पणियों में बताया गया था, यह विधि एक भोली कुंजी व्युत्पत्ति फ़ंक्शन का उपयोग करती है, इसलिए आपके पासवर्ड को सुरक्षित रहने के लिए शानदार तरीके से अच्छा होना चाहिए।
  2. इसके अतिरिक्त, यह विधि सिफरटेक्स्ट को प्रमाणित नहीं करती है, जिसका अर्थ है कि एक हमलावर आपके द्वारा देखे बिना सामग्री को संशोधित या भ्रष्ट कर सकता है।
  3. कई प्रकार की सुरक्षा के लिए, एन्क्रिप्शन बस पर्याप्त नहीं है (जैसे आप सुरक्षित रूप से संचार करने के लिए एन्क्रिप्शन का उपयोग नहीं कर सकते हैं)

यदि आप अभी भी खुलता है का उपयोग करना चाहते हैं:

  • एन्क्रिप्शन:

    openssl aes-256-cbc -in attack-plan.txt -out message.enc

  • डिक्रिप्शन:

    openssl aes-256-cbc -d -in message.enc -out plain-text.txt

आप एन्क्रिप्शन और डिक्रिप्शन दोनों पर स्विच base64का उपयोग करके संदेश को ओपन-एसएल प्राप्त कर सकते हैं -a। इस तरह, आप ईमेल संदेश में सिफरटेक्स्ट पेस्ट कर सकते हैं, उदाहरण के लिए। यह इस तरह दिखेगा:

stefano:~$ openssl aes-256-cbc -in attack-plan.txt -a
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
U2FsdGVkX192dXI7yHGs/4Ed+xEC3ejXFINKO6Hufnc=

ध्यान दें कि आपके पास सिफर और ऑपरेशन के तरीके हैं। सामान्य उपयोग के लिए, मैं सीबीसी मोड में एईएस 256 की सिफारिश करता हूं। ये आपके द्वारा उपलब्ध सिफर मोड हैं (केवल एईएस की गिनती):

aes-128-cbc ← this is okay
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc ← this is recommended
aes-256-ecb

यह सभी देखें:

कृपया ध्यान दें:

OpenSSL आपसे पासवर्ड मांगेगा। यह एक एन्क्रिप्शन कुंजी नहीं है, यह 32 बाइट्स तक सीमित नहीं है! यदि आप फ़ाइलों को किसी और के साथ स्थानांतरित करने जा रहे हैं, तो आपका साझा रहस्य बहुत मजबूत होना चाहिए। आप इस साइट का उपयोग यह जानने के लिए कर सकते हैं कि आपका पासवर्ड कितना अच्छा है:

  • https://www.grc.com/haystack.htm (यह किसी भी शब्दकोश के हमलों को ध्यान में नहीं रखता है!)
  • http://howsecureismypassword.net (यह सामान्य पासवर्ड के लिए कम से कम जांच करें)

चेतावनी: मैंने जाँच की है कि ये साइट आपके पासवर्ड को सर्वर पर नहीं भेजती हैं, लेकिन कभी भी बदल सकती हैं। देव टूल / इंस्पेक्टर के साथ इन साइटों का उपयोग करें और जांचें कि क्या वे आपके मजबूत पासवर्ड में टाइप करने से पहले कुछ भी भेजते हैं।


9
openssl aes-256-cbcसे छोटा है openssl enc -aes-256-cbcऔर काम भी करता है। इसके लिए मैनुअल पेज रन करके उपलब्ध है man enc। कभी भी ऐसे ecbडेटा का उपयोग न करें , जिनके साथ गुस्सा न हो, हमेशा उपयोग करें cbc-saltडिफ़ॉल्ट होने के बाद से यह बेमानी है। यदि आप छोड़ते हैं -out filenameतो आउटपुट मानक आउटपुट को लिखा जाएगा जो उपयोगी है यदि आपको डेटा का विश्लेषण करने की आवश्यकता है, लेकिन इसे डिस्क पर न लिखें। यह अगले आदेश को प्लेनटेक्स्ट के लिए लाइन काउंड दिखाता है openssl aes-256-cbc -d -in filename | wc -l:। (एक और उपयोग करते हैं, एक फ़ाइल को पढ़ने: openssl aes-256-cbc -d -in filename | less)
Lekensteyn

1
मैं एक स्क्रिप्ट में लगभग इसका उपयोग करता हूं: /usr/bin/openssl enc -aes-256-cbc -a -salt -in $1 -out ${1}.enc जैसा कि आप अपेक्षा करेंगे उल्टा होगा।
बेलाक्वा

1
एईएस 256 से एईएस 128 को प्राथमिकता देने का कोई कारण नहीं है। @ लाइकेनस्टीन कभी भी गोपनीय डेटा के लिए ईसीबी का उपयोग न करें - मूल रूप से ईसीबी का उपयोग कभी नहीं किया जाना चाहिए (केवल विशेषज्ञों के लिए: ईसीबी का उपयोग कुछ बहुत विशिष्ट मामलों को छोड़कर कभी नहीं किया जाना चाहिए)। अधिक आम तौर पर, opensslकमांड लाइन उपकरण ज्यादातर ओपनएसएसएल पुस्तकालय के परीक्षण के लिए एक सबूत-की-अवधारणा है। इस प्रश्न का सही उत्तर या तो GPG या कुछ आर्काइव है जैसे 7z
गाइल्स

1
मैं जोड़ना चाहूंगा कि openssl encयदि आपके पास कमजोर पासवर्ड है तो वास्तव में वह सुरक्षित नहीं है। मैंने पहले कुछ उपयोग की सिफारिश की थी openssl enc, लेकिन अब gpgइसके बजाय उपयोग करने का सुझाव देता हूं क्योंकि यह एक बेहतर तरीके से केडीएफ का उपयोग करता है। इस जवाब को देखें ।
लेकेनस्टीएन

2
-1 निम्न-स्तरीय ओपनएसएसएल उपयोग की सिफारिश करने के लिए। यह कोई HMAC कार्यक्षमता प्रदान नहीं करता है और जैसा कि @Lekensteyn बताते हैं, इसमें उचित KDF का अभाव है।
gertvdijk 13

26

मुझे gpgकमांड का उपयोग करना पसंद है :

एन्क्रिप्ट करें:

gpg --cipher-algo AES256 --symmetric filename.tar.gz

आशुलिपि:

gpg --cipher-algo AES256 -c filename.tar.gz

यह एक पासफ़्रेज़ के लिए पूछेगा।

डिक्रिप्ट:

gpg --output filename.tar.gz --decrypt filename.tar.gz.gpg

आशुलिपि:

gpg -o filename.tar.gz -d filename.tar.gz.gpg

आप AES256 को डिफ़ॉल्ट बनाने के cipher-algo AES256लिए भी जोड़ सकते हैं ~/.gnupg/gpg.conf। (मैनपेज के अनुसार यह CAST5 है )


आप भी उपयोग कर सकते हैं AES(मतलब एईएस -128)। एईएस -128 थोड़ा तेज है और कम सुरक्षित नहीं है।
गाइल्स

2
+1। यह भी ध्यान दें कि AES का उपयोग करते समय GnuPG आपके लिए संदेश प्रमाणीकरण (HMAC) भी प्रदान करता है (जिसमें ओपनएसएसएल में लेखन के समय सबसे अधिक उत्तर दिया जा रहा है) का अभाव है। पृष्ठभूमि की जानकारी: superuser.com/a/633716/157409
gertvdijk

मैं gpgपासवर्ड कैशिंग से कैसे रोक सकता हूं ?
user76284

16

7z (जब पासवर्ड विकल्प का उपयोग किया जाता है) 256bit एईएस एन्क्रिप्शन (SHA256 कुंजी खींच के साथ) का उपयोग करता है ।

इसे स्थापित करें ( p7zip-full), उस फ़ाइल या निर्देशिका पर राइट क्लिक करें जिसे आप एन्क्रिप्ट करना चाहते हैं, और कंप्रेस , .7z और अन्य विकल्प / पासवर्ड चुनें

यहाँ छवि विवरण दर्ज करें

डिक्रिप्शन के लिए, .7z फ़ाइल पर राइट क्लिक करें और यहाँ एक्सट्रैक्ट चुनें ।


1
आप 7z के लिए GUI कैसे लॉन्च करते हैं?
m0skit0

4

aescrypt

लिंक की गई वेबसाइट में एक ओपन-सोर्स 256-बिट एसेस इनक्रिप्ट / डिक्रिप्ट टूल है और यह मल्टीप्लाकॉर्डर है - मैकओएस, विंडोज, लिनक्स और अन्य जावा के माध्यम से।

एन्क्रिप्ट करें: aescrypt -e <file>

डिक्रिप्ट: aescrypt -d <file>

आप सिंटैक्स का उपयोग करके अपने होम फ़ोल्डर को बैकअप और एन्क्रिप्ट कर सकते हैं:

tar -cvf - /home/<home_folder> | aescrypt -e -p <password_message> - > backup.tar.aes

ubuntu स्थापना

स्रोत को डाउनलोड करें और निकालें

make
sudo make install

अन्य प्लेटफार्मों

वेबसाइट से बायनेरिज़ या सोर्स-कोड डाउनलोड करें।


3

मेरे द्वारा सुझाए गए बहुत सारे सुझाव इस धागे में पहले ही सामने आ चुके हैं। असल में, किसी फाइल या स्क्रिप्ट को एन्क्रिप्ट करने के बारे में ओपनसेल वास्तव में सबसे आसान तरीका है। हालांकि, मैं एईएस -256 का उपयोग करने के खिलाफ सावधानी बरतूंगा क्योंकि यह कुछ प्लेटफार्मों पर ओपनसेल के सभी संस्करणों में उपलब्ध नहीं है । सबसे नए OSes ... यानी Linux के पास है। लेकिन अन्य जैसे कि AIX 5.3 नहीं है (मुझे लगता है कि एचपी-यूएक्स के रूप में अच्छी तरह से)। यदि आप विभिन्न प्लेटफार्मों में अपनी फ़ाइल या स्क्रिप्ट का उपयोग करने का इरादा रखते हैं, तो मैं AES-128 का उपयोग करने की दृढ़ता से सलाह देता हूं क्योंकि यह हर जगह उपलब्ध है।

आप AES-128 का उपयोग करके किसी फ़ाइल को कैसे "जल्दी और आसानी से" एन्क्रिप्ट कर सकते हैं?

Www.ShellScrypt.com जैसी साइट खोल स्क्रिप्ट को एन्क्रिप्ट करने के लिए काफी तीव्रता से ओपनएसएल एईएस -128 का उपयोग करती है और फिर स्क्रिप्ट की एन्क्रिप्टेड प्रतियां निष्पादन योग्य बनाती है। आपको बस स्क्रिप्ट को साइट पर पेस्ट करना है, और आपके लिए एक जिप फाइल बन जाएगी। उस ज़िप फ़ाइल में एन्क्रिप्टेड (और निष्पादन योग्य होगा यदि वह आपकी फ़ाइल का स्क्रिप्ट) संस्करण है। यह आपको "की अनुमति देता है आसानी से " और " आसानी से " फ़ाइल / लिपि हर प्रणाली आप पर स्क्रिप्ट का उपयोग या openssl आदेशों के कई जटिल और भ्रामक मंत्र चलाना चाहते हैं पर कोई पैकेज या मॉड्यूल आवश्यकता को पूरा करने के बिना एन्क्रिप्ट।

नीचे दिखाया गया एक मूल एन्क्रिप्ट / डिक्रिप्ट ओपनसेल कमांड है जो एईएस -128 का उपयोग करता है:

test@test-VirtualBox:~$ 
test@test-VirtualBox:~$ echo precious-content | openssl aes-128-cbc -a -salt -k mypassword
U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypassword
precious-content
test@test-VirtualBox:~$ 
test@test-VirtualBox:~$

2
सिर्फ एक हेड-अप देने के लिए एक टिप्पणी छोड़ना कि "shellscrypt.com" नीचे और बाहर है (उर्फ: साइट चला गया है)।
ई-सुशी

1

स्टेफानो पलाज़ो के जवाब में जोड़ते हुए, मैंने थोड़ा बैश फ़ंक्शन बनाया जो बेस 64 कमांड के समान काम करता है।

यह aes256 फ़ाइल को एन्क्रिप्ट करेगा, और फिर बेस 64 इसे एनकोड करेगा। रिवर्स करते समय, यह6464 डीकोड, डिक्रिप्ट और मूल प्लेटेक्स्ट को थूक देगा।

aes256() {
  decodeMe=""
  isPipe="$([ ! -t 0 ] && echo "true" || echo "false")"

  if [ "$1" = '-d' ] || [ "$1" = '--decode' ]; then
    decodeMe="-d"
    shift
  fi

  if [ "$isPipe" = "true" ]; then
    read input
    printf '%s\n' "$input" | openssl aes-256-cbc -a $decodeMe
    exitCode="$?"
  else
    openssl aes-256-cbc -a $decodeMe -in "$*"
    exitCode="$?"
  fi

  unset isPipe decodeMe input
  return "$exitCode"
}

उपयोग:

echo "my string" | aes256
# enter aes-256-cbc encryption password
# Returns: U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=

echo "U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=" | aes256 -d
# enter aes-256-cbc decryption password
# Returns: my string

aes256 file.plain > file.crypt
# enter aes-256-cbc encryption password

aes256 -d file.crypt
# enter aes-256-cbc decryption password
# Spits out original unencrypted file.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.