AES एन्क्रिप्शन टूल (AES-128/192/256)

AES-128/192/256 से टेक्स्ट एन्क्रिप्ट करें: CBC, GCM, CTR, CFB, OFB या ECB। OpenSSL-संगत पासफ़्रेज़ या रॉ hex की + IV। सब कुछ आपके ब्राउज़र में चलता है।

आउटपुट Base64 में OpenSSL "Salted__" फ़ॉर्मेट में है: 8 बाइट का रैंडम सॉल्ट और उसके बाद सिफ़रटेक्स्ट। की और IV पासफ़्रेज़ व सॉल्ट से बनते हैं, इसलिए एक ही टेक्स्ट हर बार अलग परिणाम देता है। समकक्ष कमांड:

openssl enc -aes-256-cbc -md md5 -a -A -k '…'

पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड नहीं होता।

AES एन्क्रिप्शन क्या है?

टेक्स्ट या hex डेटा को AES से एन्क्रिप्ट करता है, जो स्टैंडर्ड ब्लॉक सिफ़र (FIPS 197) है। आप पासफ़्रेज़ से OpenSSL के Salted__ फ़ॉर्मेट में की बना सकते हैं, जिसे openssl enc और CryptoJS डिक्रिप्ट कर सकते हैं, या कोड के साथ संगतता के लिए hex में रॉ की और IV दे सकते हैं। CBC, CFB, CTR, OFB, ECB और प्रमाणित GCM मोड समर्थित हैं।

AES एन्क्रिप्शन का उपयोग कैसे करें

  1. की का स्रोत में पासफ़्रेज़ (OpenSSL-संगत) रहने दें और पासफ़्रेज़ लिखें, या रॉ की + IV (hex) चुनकर hex में सटीक की और IV दर्ज करें।
  2. मोड और पैडिंग चुनें (OpenSSL का डिफ़ॉल्ट PKCS#7 के साथ CBC है); रॉ की के साथ GCM और वैकल्पिक अतिरिक्त प्रमाणित डेटा भी चुन सकते हैं।
  3. प्लेनटेक्स्ट लिखें या पेस्ट करें (बाइनरी डेटा के लिए इनपुट एन्कोडिंग को Hex करें)।
  4. एन्क्रिप्ट करें पर क्लिक करें, आउटपुट एन्कोडिंग में Base64 या Hex चुनें और सिफ़रटेक्स्ट कॉपी करें।

उदाहरण

इनपुट
Key 2b7e151628aed2a6abf7158809cf4f3c, IV 000102030405060708090a0b0c0d0e0f, mode CBC, padding None, hex plaintext 6bc1bee22e409f96e93d7e117393172a
आउटपुट
7649abac8119b246cee98e9b12e9197d

NIST SP 800-38A F.2.1 टेस्ट वेक्टर, आउटपुट एन्कोडिंग Hex।

AES एन्क्रिप्शन का उपयोग कब करें

इसे तब इस्तेमाल करें जब AES वाले किसी एप्लिकेशन के लिए टेस्ट डेटा चाहिए, कोई स्निपेट एन्क्रिप्ट करना हो जिसे आप OpenSSL या CryptoJS से डिक्रिप्ट करेंगे, या यह समझना हो कि मोड और पैडिंग से आउटपुट कैसे बदलता है। असली डेटा के लिए GCM (या CBC के साथ अलग MAC) चुनें, क्योंकि अकेले CBC/CTR/CFB/OFB छेड़छाड़ पकड़ नहीं पाते। ECB से बचें: एक जैसे ब्लॉक का सिफ़रटेक्स्ट भी एक जैसा आता है। फ़ाइलों या लंबे समय के सीक्रेट के लिए age, GnuPG या अपने प्लेटफ़ॉर्म की एन्क्रिप्शन API जैसा समर्पित टूल इस्तेमाल करें।

AES एन्क्रिप्शन कैसे काम करता है

AES 16 बाइट के ब्लॉक को 128, 192 या 256-बिट की से एन्क्रिप्ट करता है (10, 12 या 14 राउंड)। पासफ़्रेज़ मोड में 8 बाइट का रैंडम सॉल्ट बनता है और की व IV, OpenSSL के EVP_BytesToKey (MD5, एक इटरेशन – openssl enc -md md5 और CryptoJS का डिफ़ॉल्ट) या PBKDF2-HMAC-SHA256 (openssl enc -pbkdf2) से निकाले जाते हैं; आउटपुट Salted__ + सॉल्ट + सिफ़रटेक्स्ट का Base64 होता है। रॉ मोड में आपकी hex की और IV सीधे इस्तेमाल होते हैं और सिर्फ़ सिफ़रटेक्स्ट लौटता है। CBC और ECB में PKCS#7 (या ज़ीरो/कोई नहीं) पैडिंग लगती है; CFB, OFB और CTR बिना पैडिंग के स्ट्रीम मोड हैं। GCM ब्राउज़र के Web Crypto API से 12 बाइट के नॉन्स के साथ चलता है और 16 बाइट का ऑथेंटिकेशन टैग जोड़ता है। यह इम्प्लीमेंटेशन NIST SP 800-38A और GCM टेस्ट वेक्टर पास करता है।

सामान्य उपयोग मामले

  • टर्मिनल के बिना openssl enc -aes-256-cbc संगत सिफ़रटेक्स्ट बनाना
  • डिबगिंग के लिए CryptoJS.AES.encrypt(text, passphrase) का आउटपुट दोहराना
  • बैकएंड इम्प्लीमेंटेशन के लिए AES-GCM टेस्ट वेक्टर (सिफ़रटेक्स्ट + टैग) बनाना
  • कॉन्फ़िग फ़ाइल में चिपकाने के लिए रॉ 256-बिट की और IV से छोटा सीक्रेट एन्क्रिप्ट करना
  • दिखाना कि ECB मोड CBC या CTR की तुलना में पैटर्न क्यों लीक करता है

सुरक्षा नोट

सब कुछ आपके ब्राउज़र में स्थानीय रूप से चलता है; कुछ भी अपलोड नहीं होता। MD5 के साथ EVP_BytesToKey एक कमज़ोर, तेज़ की डेरिवेशन है जो सिर्फ़ संगतता के लिए रखी गई है – किसी भी महत्वपूर्ण चीज़ के लिए ज़्यादा इटरेशन वाला PBKDF2 या रैंडम रॉ की चुनें। बिना ऑथेंटिकेशन वाला एन्क्रिप्शन (CBC, CTR, CFB, OFB) बदलाव को पकड़ नहीं पाता।

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

क्या आउटपुट OpenSSL के साथ संगत है?

हाँ। पासफ़्रेज़ मोड में नतीजा ठीक वही है जो openssl enc -aes-256-cbc -md md5 -a -A -k <passphrase> बनाता है (MD5 के साथ EVP_BytesToKey), या PBKDF2-HMAC-SHA256 चुनने पर -pbkdf2 -iter N। डिक्रिप्ट करने के लिए -d जोड़ें। पेज पासफ़्रेज़ फ़ील्ड के नीचे उसी से मेल खाता कमांड दिखाता है।

हर बार अलग सिफ़रटेक्स्ट क्यों मिलता है?

पासफ़्रेज़ मोड हर एन्क्रिप्शन में नया रैंडम सॉल्ट इस्तेमाल करता है, इसलिए की, IV और सिफ़रटेक्स्ट बदल जाते हैं। यह जानबूझकर है; कोई भी आउटपुट उसी पासफ़्रेज़ से डिक्रिप्ट हो जाता है। रॉ-की मोड में एक ही की, IV और इनपुट पर नतीजा हर बार एक जैसा रहता है।

कौन सा मोड चुनूँ?

GCM, क्योंकि यह डेटा को प्रमाणित भी करता है (कुछ बदला गया तो डिक्रिप्शन विफल होगा)। अगर पाने वाली तरफ़ सिर्फ़ openssl enc चलता है तो CBC चुनें – OpenSSL enc GCM को सपोर्ट नहीं करता। एक ही की के साथ GCM नॉन्स या CTR काउंटर कभी दोबारा इस्तेमाल न करें।

पासफ़्रेज़ और रॉ की में क्या फ़र्क है?

पासफ़्रेज़ को की-डेरिवेशन फ़ंक्शन और सॉल्ट से की में बदला जाता है, और सॉल्ट आउटपुट में ही रहता है। रॉ की जैसी लिखी जाए वैसी ही इस्तेमाल होती है (AES-128/192/256 के लिए 16, 24 या 32 बाइट), और IV आपको अलग से साझा करना होता है।

और श्रेणियाँ देखें