जावास्क्रिप्ट में एईएस 256-बिट एन्क्रिप्शन के लिए एक पुस्तकालय उपलब्ध है?
जावास्क्रिप्ट में एईएस 256-बिट एन्क्रिप्शन के लिए एक पुस्तकालय उपलब्ध है?
जवाबों:
JSAES जावास्क्रिप्ट में एईएस का एक शक्तिशाली कार्यान्वयन है। http://point-at-infinity.org/jsaes/
यहां एक प्रदर्शन पृष्ठ है जो slowAES का उपयोग करता है।
slowAES का उपयोग करना आसान था। तार्किक रूप से डिजाइन किया गया। उचित OO पैकेजिंग। IV और एन्क्रिप्शन मोड की तरह knobs और लीवर का समर्थन करता है। .NET / C # के साथ अच्छी संगतता। नाम है जीभ-इन-गाल; इसे " धीमी AES" कहा जाता है क्योंकि यह C ++ में लागू नहीं है। लेकिन मेरे परीक्षणों में यह अव्यवहारिक रूप से धीमा नहीं था।
इसमें ईसीबी मोड का अभाव है। इसके अलावा, CTR मोड का अभाव है, हालाँकि आप ECB मोड में दिए गए एक बहुत आसानी से बना सकते हैं, मुझे लगता है।
यह पूरी तरह से एन्क्रिप्शन पर केंद्रित है। एक अच्छा पूरक वर्ग जो जावास्क्रिप्ट में RFC2898 -compliant पासवर्ड-आधारित कुंजी व्युत्पत्ति करता है, आनंदम से उपलब्ध है । पुस्तकालयों की यह जोड़ी अनुरूप .NET वर्ग के साथ अच्छी तरह से काम करती है। अच्छा इंटरॉप। हालाँकि, SlowAES के विपरीत, जावास्क्रिप्ट पीबीकेडीएफ 2 कुंजी पैदा करते समय Rfc2898DeriveBytes वर्ग की तुलना में काफी धीमा है ।
यह आश्चर्य की बात नहीं है कि तकनीकी रूप से अच्छा इंटरॉप है, लेकिन मेरे लिए मुख्य बिंदु था स्लोवाइस द्वारा अपनाया गया मॉडल परिचित और उपयोग में आसान है। मुझे AES के लिए कुछ अन्य जावास्क्रिप्ट लाइब्रेरीज़ मिलीं जिन्हें समझना और उपयोग करना कठिन है। उदाहरण के लिए, उनमें से कुछ में मुझे IV, या मोड (CBC, ECB, आदि) सेट करने की जगह नहीं मिली। चीजें ऐसी नहीं थीं, जहां मुझे उनके होने की उम्मीद थी। SlowAES ऐसा नहीं था। प्रॉपर्टीज वहीं थीं जहां मुझे उनसे उम्मीद थी। जावा और .NET क्रिप्टो प्रोग्रामिंग मॉडल से परिचित होना मेरे लिए आसान था।
आनंदम का PBKDF2 उस स्तर पर काफी नहीं था। इसने DeriveBytes फ़ंक्शन को केवल एक कॉल का समर्थन किया, इसलिए यदि आपको पासवर्ड से कुंजी और IV दोनों प्राप्त करने की आवश्यकता है, तो यह लाइब्रेरी अपरिवर्तित नहीं होगी। कुछ मामूली संशोधन, और यह उस उद्देश्य के लिए ठीक काम कर रहा है।
संपादित करें : मैं एक साथ रखा एक उदाहरण पैकेजिंग के SlowAES और आनन्दम के का एक संशोधित संस्करण PBKDF2 विंडोज़ स्क्रिप्ट घटक में। पासवर्ड-व्युत्पन्न कुंजी के साथ इस एईएस का उपयोग करना .NET RijndaelManaged वर्ग के साथ अच्छा अंतर दिखाता है।
EDIT2 : डेमो पेज एक वेब पेज से इस एईएस एन्क्रिप्शन का उपयोग करने का तरीका दिखाता है। .NET में समर्थित समान इनपुट्स (iv, की, मोड, आदि) का उपयोग करने से आपको .NET Rijndael क्लास के साथ अच्छा इंटरोप मिलता है। आप उस पृष्ठ के लिए जावास्क्रिप्ट प्राप्त करने के लिए एक "दृश्य स्रोत" कर सकते हैं।
EDIT3
एक देर से जोड़: जावास्क्रिप्ट क्रिप्टोग्राफी हानिकारक माना जाता है। पढ़ने लायक।
एईएस एन्क्रिप्शन के लिए मेरी खोजों में मैंने कुछ स्टैंडफोर्ड छात्रों से यह पाया। वहां तेजी से होने का दावा। CCM, OCB, GCM और ब्लॉक एन्क्रिप्शन का समर्थन करता है। http://crypto.stanford.edu/sjcl/
गोगलिंग "जावास्क्रिप्ट एईएस" ने कई उदाहरण पाए हैं। पहला पॉप अप जो एल्गोरिदम को समझाने और साथ ही समाधान प्रदान करने के लिए डिज़ाइन किया गया है:
यह पोस्ट अब पुरानी हो गई है, लेकिन क्रिप्टो-जेएस , अब पूरी तरह से जावास्क्रिप्ट एन्क्रिप्शन लाइब्रेरी हो सकती है।
CryptoJS जावास्क्रिप्ट में कार्यान्वित क्रिप्टोग्राफ़िक एल्गोरिदम का एक संग्रह है। इसमें निम्नलिखित वैज्ञानिक शामिल हैं: AES-128, AES-192, AES-256, DES, ट्रिपल डेस, खरगोश, RC4, RC4Drop और हैशर्स: MD5, RIPEMD-160, SHA-1, SHA-256, SHA-512, SHA -3 224, 256, 384, या 512 बिट्स के साथ।
आप उनके क्विक-स्टार्ट गाइड को देखना चाहते हैं जो निम्न नोड.जेएस पोर्ट के लिए भी संदर्भ है।
नोड-क्रिप्टोज-एईएस क्रिप्टो-जेएस का नोड.जेएस पोर्ट है
हाल ही में मुझे जावास्क्रिप्ट और अजगर के बीच कुछ एन्क्रिप्शन / डिक्रिप्शन इंटरऑपरेबिलिटी करने की आवश्यकता थी।
विशेष रूप से ...
1) जावास्क्रिप्ट में एन्क्रिप्ट करने के लिए एईएस का उपयोग करना और अजगर (Google ऐप इंजन) में डिक्रिप्ट करना 2) जावास्क्रिप्ट में एन्क्रिप्ट करने के लिए आरएसए का उपयोग करना और अजगर (Google ऐप इंजन) में डिक्रिप्ट करना 3) pycrypto का उपयोग करना
मुझे वेब पर बहुत सारे आरएसए और एईएस के बहुत सारे संस्करण तैरते हुए मिले और वे सभी उनके दृष्टिकोण में भिन्न थे लेकिन मुझे जावास्क्रिप्ट और पायथन इंटरऑपरेबिलिटी के अंत का एक अच्छा उदाहरण नहीं मिला।
आखिरकार मैं एक साथ कुछ करने में कामयाब रहा जो बहुत परीक्षण और त्रुटि के बाद मेरी जरूरतों के अनुकूल था।
किसी भी तरह मैंने js / webapp के उदाहरण के लिए दस्तक दी, जो एक Google ऐप इंजन होस्टेड अजगर सर्वर से बात कर रहा है जो एईएस और सार्वजनिक कुंजी और निजी कुंजी आरएसए सामान का उपयोग करता है।
हालांकि मैं इसे यहाँ लिंक के द्वारा शामिल करूँगा क्योंकि यह उसी चीज़ के लिए कुछ काम का होगा जिसे उसी चीज़ को पूरा करने की आवश्यकता है।
http://www.ipowow.com/files/aesrsademo.tar.gz
और rsa-aes-Demo DOT appspot DOT com पर डेमो देखें
संपादित करें: ब्राउज़र कंसोल आउटपुट को देखें और कुछ संकेत और उपयोगी संदेश प्राप्त करने के लिए स्रोत भी देखें जो डेमो में चल रहा है
संपादित करें: स्रोत को अब इंगित करने के लिए बहुत पुराना और अशुद्ध लिंक अपडेट किया गया
मेरे अपने अनुभव को देखते हुए, asmcrypto.js जावास्क्रिप्ट में सबसे तेज़ एईएस कार्यान्वयन प्रदान करता है (विशेष रूप से फ़ायरफ़ॉक्स में क्योंकि यह पूरी तरह से asm.js का लाभ उठा सकता है)।
रीडमी से:
Chrome/31.0 SHA256: 51 MiB/s (9 times faster than SJCL and CryptoJS) AES-CBC: 47 MiB/s (13 times faster than CryptoJS and 20 times faster than SJCL) Firefox/26.0 SHA256: 144 MiB/s (5 times faster than CryptoJS and 20 times faster than SJCL) AES-CBC: 81 MiB/s (3 times faster than CryptoJS and 8 times faster than SJCL)
संपादित करें: वेब क्रिप्टोग्राफी एपीआई अब है सबसे ब्राउज़र में लागू और प्राथमिक समाधान के रूप में इस्तेमाल किया जाना चाहिए यदि आप प्रदर्शन के बारे में परवाह है। विदित हो कि IE11 ने मानक का एक पूर्व मसौदा संस्करण लागू किया था जिसमें वादों का उपयोग नहीं किया गया था।
कुछ उदाहरण यहां देखे जा सकते हैं:
CryptoJS का उपयोग करें
यहाँ कोड है: https://github.com/odedhb/AES-encrypt
और यहाँ ऑनलाइन काम करने का उदाहरण है: https://odedhb.github.io/AES-encrypt/
Asmcrypto.js आज़माएं - यह वास्तव में तेज़ है।
पुनश्च: मैं एक लेखक हूं और यदि कोई हो तो मैं आपके सवालों का जवाब दे सकता हूं। इसके अलावा मैं कुछ प्रतिक्रिया पाने के लिए खुश हूँ :)
http://www.movable-type.co.uk/scripts/aes.html लाइब्रेरी कुछ मदद कर सकती है।
यदि आप SSL का उपयोग करने से बचने के लिए जावास्क्रिप्ट का उपयोग करने का प्रयास कर रहे हैं, तो फिर से सोचें। कई आधे-अधूरे उपाय हैं, लेकिन केवल SSL सुरक्षित संचार प्रदान करता है। जावास्क्रिप्ट एन्क्रिप्शन लाइब्रेरी हमलों के एक निश्चित सेट के खिलाफ मदद कर सकती है, लेकिन एक सच्चे आदमी के बीच का हमला नहीं।
यदि आप कस्टम डोमेन पर google ऐप इंजन के लिए एसएसएल की तलाश कर रहे हैं, तो wwwizer.com पर एक नज़र डालें ।
निम्न पोस्ट बताती है कि जावास्क्रिप्ट के साथ प्रयास सुरक्षित संचार कैसे बनाएं और इसे कैसे गलत करें : SSL / HTTPS के बजाय जावास्क्रिप्ट एन्क्रिप्शन मॉड्यूल का उपयोग करें
क्रिप्टोज के विकल्प के रूप में एक स्टैनफोर्ड फ्री लिब भी है
एक अन्य समाधान w / AES-256 समर्थन: https://github.com/digitalbazaar/forge
यहाँ एकमात्र समाधान है जो मेरे लिए काम कर रहा है:
http://www.hanewin.net/encrypt/aes/aes.htm
यह बहुत बुनियादी है, लेकिन उपयोग करने के लिए सरल है और अच्छी तरह से काम करता है।