Toolonit
  1. होम
  2. एन्क्रिप्शन
  3. एन्क्रिप्ट / डिक्रिप्ट
  4. AES

AES एन्क्रिप्शन और डिक्रिप्शन

AES-128, 192 या 256 से टेक्स्ट एन्क्रिप्ट और डिक्रिप्ट करें — GCM, CBC, CTR और अन्य मोड।

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

डिक्रिप्ट करने के लिए यह फिर से चाहिए होगा। आप जो भी लिखते हैं, वह इस पेज से बाहर नहीं जाता।

PBKDF2 इटरेशन

OpenSSL का डिफ़ॉल्ट 10,000 है। कोई भी संख्या चलेगी: ज़्यादा इटरेशन से पासवर्ड का अंदाज़ा लगाना धीमा होता है; डिक्रिप्ट करने के लिए वही संख्या चाहिए।

मोड

OpenSSL के साथ आम चुनाव। IV चाहिए; पूरे ब्लॉक तक पैडिंग करता है।

कुंजी का साइज़
आउटपुट फ़ॉर्मैट
OpenSSL में यही
openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -a -A

OpenSSL पासवर्ड पूछता है; टेक्स्ट उसमें पेस्ट करें, या -in और -out फ़ाइलें जोड़ें।

पासवर्ड या अपनी कुंजी और IV से टेक्स्ट को AES-256 — या AES-128 या AES-192 — से एन्क्रिप्ट करें, या Base64 या hex में AES सिफ़रटेक्स्ट पेस्ट करके उसे डिक्रिप्ट करें। पासवर्ड के साथ नतीजे का फ़ॉर्मैट openssl enc -pbkdf2 जैसा ही होता है: Salted__ हेडर, 8 बाइट का रैंडम सॉल्ट और सिफ़रटेक्स्ट, और कुंजी और IV, PBKDF2-HMAC-SHA256 से बनते हैं। डिफ़ॉल्ट सेटिंग — CBC मोड में AES-256, PKCS#7 पैडिंग और Base64 आउटपुट — openssl enc -aes-256-cbc -pbkdf2 -a से मेल खाती है, और GCM, CTR, CFB, OFB और ECB बस एक क्लिक दूर हैं। लिखते-लिखते नतीजा अपडेट होता है। सब कुछ आपके ब्राउज़र में होता है, इसलिए आपका टेक्स्ट, पासवर्ड और कुंजी कभी आपके डिवाइस से बाहर नहीं जाते; यह मुफ़्त है और साइन-अप की ज़रूरत नहीं।

AES से टेक्स्ट कैसे एन्क्रिप्ट और डिक्रिप्ट करें

  1. “एन्क्रिप्ट” या “डिक्रिप्ट” चुनें। एन्क्रिप्ट करने के लिए टेक्स्ट लिखें, या डिक्रिप्ट करने के लिए Base64 या hex टेक्स्ट पेस्ट करें — फ़ॉर्मैट अपने-आप पहचाना जाता है।
  2. पासवर्ड डालें (“जनरेट करें” एक मज़बूत पासवर्ड बनाता है), या “कुंजी और IV (hex)” पर जाकर बताई गई लंबाई की कुंजी और IV डालें या जनरेट करें।
  3. कुंजी का साइज़ (128, 192 या 256 बिट) और मोड चुनें। डिक्रिप्ट करने के लिए वही पासवर्ड, इटरेशन संख्या, कुंजी का साइज़ और मोड इस्तेमाल करें जिनसे टेक्स्ट एन्क्रिप्ट हुआ था।
  4. नतीजा कॉपी या डाउनलोड करें, या “अदला-बदली” दबाकर उसे इनपुट में ले जाएँ और दिशा उलट दें। “OpenSSL में यही” के नीचे पेज मेल खाता openssl कमांड दिखाता है, आपके पासवर्ड के बिना।

सुविधाएँ

  • CBC, GCM, CTR, CFB, OFB या ECB मोड में AES-128, AES-192 और AES-256
  • openssl enc -pbkdf2 फ़ॉर्मैट में पासवर्ड मोड: Salted__ हेडर, 8 बाइट का रैंडम सॉल्ट, PBKDF2-HMAC-SHA256 से कुंजी और IV
  • 10,000 (OpenSSL का डिफ़ॉल्ट), 1,00,000 या 6,00,000 PBKDF2 इटरेशन, या 1 करोड़ तक कोई भी संख्या
  • अपनी hex कुंजी और IV के साथ “कुंजी और IV” मोड, या “जनरेट करें” से रैंडम कुंजी और IV
  • AES-GCM ग़लत पासवर्ड या कुंजी और सिफ़रटेक्स्ट में हुआ कोई भी बदलाव पकड़ लेता है
  • PKCS#7 पैडिंग, या CBC और ECB में बिना पैडिंग
  • Base64 या hex आउटपुट; Base64 या hex इनपुट अपने-आप पहचाना जाता है
  • GCM को छोड़कर हर मोड के लिए मेल खाता openssl enc कमांड

क्या यह निजी है?

हाँ। AES आपके ब्राउज़र के अंदर WebAssembly में चलता है, और पासवर्ड को कुंजी में ब्राउज़र का अपना Web Crypto बदलता है। आपका टेक्स्ट, पासवर्ड और कुंजी कभी अपलोड या सेव नहीं होते, और पेज पर दिखने वाले openssl कमांड में ये कभी शामिल नहीं होते।

अक्सर पूछे जाने वाले सवाल

AES का कौन-सा मोड इस्तेमाल करें?

नए डेटा के लिए GCM: एन्क्रिप्ट करने के साथ-साथ यह टेक्स्ट में हुआ कोई भी बदलाव और ग़लत पासवर्ड पकड़ लेता है। जब दूसरी तरफ़ openssl enc हो, जो GCM नहीं पढ़ सकता, तब डिफ़ॉल्ट CBC चुनें; CTR, CFB या OFB सिर्फ़ किसी मौजूदा सिस्टम से मेल खाने के लिए चुनें। ECB से बचें: एक जैसे 16 बाइट के ब्लॉक से एक जैसा आउटपुट बनता है, इसलिए टेक्स्ट के पैटर्न झलकने लगते हैं।

क्या नतीजे को OpenSSL से डिक्रिप्ट कर सकते हैं?

हाँ, GCM को छोड़कर। डिफ़ॉल्ट सेटिंग के साथ: echo 'U2FsdGVkX1…' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -a -A — फिर OpenSSL पासवर्ड पूछता है। 256 और cbc को अपनी कुंजी के साइज़ और मोड (ecb, ctr, cfb, ofb) से, और -iter को अपनी इटरेशन संख्या से बदलें, और अगर पैडिंग बंद की थी तो -nopad जोड़ें; hex आउटपुट के लिए -a -A हटाएँ और टेक्स्ट को पहले xxd -r -p से गुज़ारें। “कुंजी और IV” मोड के लिए -pbkdf2 -iter की जगह -K <key hex> -iv <IV hex> इस्तेमाल करें। openssl enc, GCM को मना कर देता है (AEAD सिफ़र समर्थित नहीं हैं), इसलिए GCM टेक्स्ट सिर्फ़ यहाँ या कोड में पढ़ा जा सकता है।

नतीजा हर बार अलग क्यों आता है?

क्योंकि पासवर्ड से होने वाला हर एन्क्रिप्शन एक नया रैंडम सॉल्ट चुनता है, इसलिए कुंजी, IV और पूरा आउटपुट हर बार बदल जाते हैं — और हर वर्शन डिक्रिप्ट होकर वही टेक्स्ट देता है। ऐसा जानबूझकर है: कोई नहीं बता सकता कि दो संदेश एक जैसे हैं। “कुंजी और IV” मोड में कुंजी और IV दोहराने पर आउटपुट भी दोहराता है, इसलिए हर संदेश के लिए नया IV जनरेट करें: एक ही कुंजी के साथ IV दोबारा इस्तेमाल करने से CBC कमज़ोर होता है और CTR और GCM टूट जाते हैं।

यह पासवर्ड को ग़लत क्यों बताता है?

क्योंकि कुछ मेल नहीं खा रहा: पासवर्ड, इटरेशन संख्या, कुंजी का साइज़, मोड और पैडिंग सब वही होने चाहिए जिनसे एन्क्रिप्ट किया गया था, और टेक्स्ट में सिर्फ़ सॉल्ट सेव रहता है। जो टेक्स्ट U2FsdGVkX1 से शुरू होता है पर -pbkdf2 के बिना openssl enc से, या पासफ़्रेज़ के साथ CryptoJS से बना है, वह कुंजी बनाने का पुराना तरीका (EVP_BytesToKey) इस्तेमाल करता है जिसे यह पेज नहीं पढ़ता — उसे -pbkdf2 के साथ फिर से एन्क्रिप्ट करें, या अगर आपके पास रॉ कुंजी और IV हैं तो “कुंजी और IV” मोड इस्तेमाल करें।

क्या AES-256 एन्क्रिप्शन सुरक्षित है?

हाँ। किसी भी कुंजी साइज़ पर AES के ख़िलाफ़ कोई व्यावहारिक हमला नहीं है; कमज़ोर कड़ी पासवर्ड है। लंबा रैंडम पासवर्ड इस्तेमाल करें (“जनरेट करें” एक बना देता है) और जब दोनों तरफ़ आपके हाथ में हों, तो इटरेशन 6,00,000 तक बढ़ाएँ, जो PBKDF2-HMAC-SHA256 के लिए OWASP का मौजूदा आँकड़ा है। अगर यह भी जानना हो कि टेक्स्ट बदला नहीं गया, तो GCM चुनें।

संबंधित टूल