RC4 एन्क्रिप्शन (पुराना)

RC4 (ARC4) स्ट्रीम सिफ़र से टेक्स्ट एन्क्रिप्ट करें: OpenSSL-संगत पासफ़्रेज़ या रॉ hex की से। सिर्फ़ पुरानी संगतता और टेस्ट वेक्टर के लिए।

RC4 टूट चुका है: इसकी कीस्ट्रीम में सांख्यिकीय झुकाव है और TLS में यह प्रतिबंधित है (RFC 7465)। इसे सिर्फ़ पुराने डेटा के लिए इस्तेमाल करें, नए एन्क्रिप्शन के लिए नहीं।

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

OpenSSL की तरह पासफ़्रेज़ से 128-बिट RC4 की बनाई जाती है। CryptoJS.RC4 पासफ़्रेज़ के साथ 256-बिट की इस्तेमाल करता है, इसलिए उसका आउटपुट यहाँ डिक्रिप्ट नहीं हो सकता।

openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k '…'

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

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

RC4 (जिसे ARC4 या ARCFOUR भी कहते हैं) से डेटा एन्क्रिप्ट करता है, जो एक स्ट्रीम सिफ़र है और कभी WEP, शुरुआती TLS व कई फ़ाइल फ़ॉर्मेट में इस्तेमाल होता था। आउटपुट की लंबाई इनपुट जितनी ही होती है, क्योंकि RC4 डेटा को कीस्ट्रीम के साथ XOR करता है।

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

  1. पासफ़्रेज़ (OpenSSL-संगत) चुनकर पासफ़्रेज़ लिखें, या रॉ की + IV (hex) चुनकर hex में 1–256 बाइट की की दर्ज करें (RC4 में IV नहीं होता)।
  2. प्लेनटेक्स्ट लिखें या पेस्ट करें।
  3. एन्क्रिप्ट करें पर क्लिक करें और आउटपुट एन्कोडिंग में Base64 या Hex चुनें।
  4. सिफ़रटेक्स्ट कॉपी करें।

उदाहरण

इनपुट
Raw key 4b6579 ("Key"), plaintext "Plaintext", Hex output
आउटपुट
bbf316e8d940af0ad3

क्लासिक RC4 टेस्ट वेक्टर।

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

इसे पुराने सॉफ़्टवेयर के साथ काम करने या RC4 टेस्ट वेक्टर (RFC 6229) जाँचने के लिए इस्तेमाल करें। नए एन्क्रिप्शन के लिए RC4 कभी न चुनें; शुरुआती कीस्ट्रीम बाइट की के बारे में जानकारी लीक करते हैं और कोई इंटेग्रिटी जाँच नहीं होती।

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

RC4 की से 256 बाइट का परम्यूटेशन बनाता है (की-शेड्यूलिंग एल्गोरिद्म) और फिर हर इनपुट बाइट के लिए एक कीस्ट्रीम बाइट बनाता है, जिसे प्लेनटेक्स्ट के साथ XOR किया जाता है। रॉ मोड आपकी की बाइट सीधे इस्तेमाल करता है (1–256 बाइट)। पासफ़्रेज़ मोड openssl enc -rc4 की तरह पासफ़्रेज़ और रैंडम सॉल्ट से 16 बाइट की की निकालता है (EVP_BytesToKey MD5 या PBKDF2-SHA256) और Salted__ फ़ॉर्मेट में आउटपुट देता है। एन्क्रिप्शन और डिक्रिप्शन एक ही ऑपरेशन हैं।

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

  • RC4 टेस्ट वेक्टर सत्यापित करना, जैसे Key/Plaintext → BBF316E8D940AF0AD3
  • ARC4 इस्तेमाल करने वाले पुराने एप्लिकेशन के लिए डेटा बनाना
  • समझना कि WEP और TLS में RC4 क्यों टूटे
  • openssl enc -rc4 का आउटपुट दोबारा बनाना

सुरक्षा नोट

RC4 टूट चुका है: इसकी कीस्ट्रीम में मज़बूत सांख्यिकीय पूर्वाग्रह हैं और RFC 7465 इसे TLS में प्रतिबंधित करता है। यह कोई इंटेग्रिटी सुरक्षा नहीं देता। इसे सिर्फ़ पुराने डेटा के लिए इस्तेमाल करें।

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

पासफ़्रेज़ से बना CryptoJS.RC4 आउटपुट मैं यहाँ डिक्रिप्ट क्यों नहीं कर पाता?

CryptoJS पासफ़्रेज़ से 256-बिट RC4 की निकालता है, जबकि OpenSSL 128-बिट की। यह टूल OpenSSL का तरीका अपनाता है। रॉ की के साथ दोनों का नतीजा एक जैसा आता है।

क्या RC4 में IV होता है?

नहीं। इसीलिए दो संदेशों के लिए एक ही की दोबारा इस्तेमाल करना विनाशकारी है: दोनों सिफ़रटेक्स्ट को XOR करने से कीस्ट्रीम कट जाती है। पासफ़्रेज़ मोड हर बार रैंडम सॉल्ट लेकर इससे बचता है।

कौन सा OpenSSL कमांड मेल खाता है?

openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k <passphrase> (OpenSSL 3 को legacy प्रोवाइडर चाहिए)।

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