हिन्दी

डेवलपर टूल · SHA हैश कैलकुलेटर

SubtleCrypto.digest ब्राउज़र में SHA-256 हैश की गणना कैसे करता है

· यह काम किस प्रकार करता है

शा-256 क्रिप्टोग्राफी ब्राउज़र-एपिस

UTF-8 बाइट्स ब्राउज़र में प्रवेश कर रहे हैं SHA-256 डाइजेस्ट करते हैं और हेक्साडेसिमल के रूप में निकलते हैं
मूल ToolAcre वेक्टर चित्रण

प्रत्येक आधुनिक ब्राउज़र Web Crypto के माध्यम से मूल रूप से बाइट्स को हैश कर सकता है। यह पोस्ट TextEncoder से crypto.subtle.digest तक हेक्स डाइजेस्ट तक एक स्ट्रिंग का अनुसरण करती है, और प्रत्येक चरण की बाधाओं को समझाती है।

एनपीएम इंस्टाल के बिना एक हैश - ऐसी स्थितियाँ जहां एक देशी डाइजेस्ट एक बंडल लाइब्रेरी को मात देता है

आप हैशिंग पैकेज स्थापित किए बिना या रिमोट हैश वेबसाइट पर डेटा पोस्ट किए बिना एक संक्षिप्त टेक्स्ट मान के लिए डाइजेस्ट की गणना कर सकते हैं। ब्राउज़र सुरक्षित उत्पत्ति पर crypto.subtle.digest को उजागर करते हैं। हैश बाइट्स का एक नियतात्मक निश्चित लंबाई वाला फ़िंगरप्रिंट है; यह इनपुट को छुपाता नहीं है या यह साबित नहीं करता है कि इसकी आपूर्ति किसने की। ToolAcre हाथ से लिखे SHA एल्गोरिदम को शिपिंग करने के बजाय ब्राउज़र कार्यान्वयन का उपयोग करता है, और स्ट्रिंग को टैब में हैशेड रखता है।

टेक्स्ट बाइट्स नहीं है - हैशिंग से पहले टेक्स्टएन्कोडर के साथ इनपुट को UTF-8 पर एन्कोड करना, और यह चरण उत्तर क्यों तय करता है

टेक्स्ट "कैफ़े" और हैश में खिलाए गए बाइट्स एक ही प्रकार के ऑब्जेक्ट नहीं हैं। TextEncoder स्ट्रिंग को UTF-8 बाइट्स (63 61 66 C3 A9 कैफे के लिए) में मैप करता है, जबकि एक सरल लैटिन-1 रूपांतरण ने अंतिम चरित्र के लिए E9 का उपयोग किया होगा और एक अलग डाइजेस्ट तैयार किया होगा। यहां तक ​​कि देखने में समान पाठ में भी अलग-अलग यूनिकोड सामान्यीकरण रूप हो सकते हैं। JavaScript, CLI और एक सर्वर में हैश की तुलना करने से पहले एन्कोडिंग और सामान्यीकरण पर सहमत हों। ToolAcre का टेक्स्ट मोड हैशिंग से पहले स्पष्ट रूप से अपना UTF-8 रूपांतरण करता है।

डाइजेस्ट कॉल - crypto.subtle.digest एक एल्गोरिदम नाम और एक ArrayBuffer के साथ, और यह एक वादा क्यों लौटाता है

crypto.subtle.digest('SHA-256', बाइट्स) एक वादा लौटाता है क्योंकि क्रिप्टोग्राफ़िक कार्य अतुल्यकालिक हो सकता है; आउटपुट पढ़ने से पहले इसकी प्रतीक्षा करें। यह विधि स्ट्रीमिंग इटरेटर के बजाय संपूर्ण इनपुट बफ़र लेती है। SHA-256 256 bits (32 bytes) उत्सर्जित करता है, भले ही इनपुट में तीन अक्षर हों या तीन मिलियन। सुरक्षित-संदर्भ प्रतिबंध का मतलब है कि SubtleCrypto API के लिए HTTPS या लोकलहोस्ट आवश्यक है, और टूल फ़ॉलबैक का आविष्कार करने के बजाय इसकी अनुपस्थिति की रिपोर्ट करता है।

ऐरेबफ़र से हेक्स तक - परिणाम बाइट्स को 64-वर्ण स्ट्रिंग में बदलना जिसे लोग पहचानते हैं

प्रॉमिस बाइट्स के ऐरेबफ़र का समाधान करता है, हेक्स अंकों की परिचित स्ट्रिंग का नहीं। प्रत्येक बाइट को आवश्यकतानुसार अग्रणी शून्य के साथ दो आधार-16 वर्णों में परिवर्तित करें, जिससे SHA-256 के लिए बिल्कुल 64 लोअरकेस वर्ण प्राप्त हों। यह हेक्स प्रतिनिधित्व 32 bytes की लंबाई को दोगुना कर देता है, लेकिन डाइजेस्ट को नहीं बदलता है। Base64 उसी 32 bytes को अधिक संक्षिप्त रूप से प्रस्तुत कर सकता है; एल्गोरिदम, इनपुट एन्कोडिंग और आउटपुट प्रतिनिधित्व मिलान की पुष्टि के बाद ही तुलना समझ में आती है।

कार्यान्वित उदाहरण - एक छोटी स्ट्रिंग को चरण दर चरण हैश करना, प्रत्येक चरण पर बाइट्स दिखाना

ASCII टेक्स्ट एबीसी के लिए, UTF-8 बाइट्स 61 62 63 उत्पन्न करता है। उन सटीक बाइट्स में से SHA-256 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad है। ToolAcre और एक अन्य विश्वसनीय हैश कार्यान्वयन में इसका परीक्षण करें: abc को abc और उसके बाद एक नई लाइन बदलने से एक अलग परिणाम मिलता है। यदि आउटपुट भिन्न हैं, तो क्रिप्टोग्राफ़िक प्रिमिटिव पर संदेह करने से पहले छिपे हुए रिक्त स्थान और बाइट एन्कोडिंग का निरीक्षण करें। प्रदर्शित डाइजेस्ट एक प्रतिलिपि प्रस्तुत करने योग्य परीक्षण वेक्टर है, यह दावा नहीं है कि एबीCAक रहस्य है।

सुरक्षित संदर्भ - क्यों crypto.subtle केवल HTTPS और लोकलहोस्ट पर उपलब्ध है

crypto.subtle एक सुरक्षित-संदर्भ API है। एक प्रोडक्शन HTTPS पेज और एक लोकलहोस्ट डेवलपमेंट पेज आम तौर पर इसे उजागर करता है; एक सामान्य असुरक्षित रिमोट HTTP पेज नहीं हो सकता है। टूल को इनपुट और आउटपुट को होल्ड करने के लिए पर्याप्त मेमोरी की भी आवश्यकता होती है। जहां Web Crypto अनुपलब्ध है, चुपचाप बिना समीक्षा किए गए JavaScript हैश पर स्विच करने से सुरक्षा-संवेदनशील परिणाम एक अलग कार्यान्वयन पर निर्भर हो जाएगा। स्पष्ट रूप से विफल रहें और इसके बजाय एक सुरक्षित वातावरण चुनें।

इसमें क्या शामिल नहीं है - कुंजीबद्ध हैशिंग (HMAC) और बहुत बड़े इनपुट की वृद्धिशील हैशिंग, जो एक-शॉट डाइजेस्ट API प्रदान नहीं करता है

एक-शॉट डाइजेस्ट API बड़ी फ़ाइलों के लिए वृद्धिशील हैशिंग नहीं है। SHA-256 एक पासवर्ड भंडारण योजना नहीं है: तेज़ अनसाल्टेड हैश से अनुमान लगाना सस्ता हो जाता है, इसलिए पासवर्ड भंडारण के लिए एक उद्देश्य-निर्मित, नमकीन, जानबूझकर महंगी KDF की आवश्यकता होती है। SHA-1 को लीगेसी इंटरऑपरेबिलिटी के लिए प्रदर्शित किया जा सकता है, लेकिन इसका टकराव प्रतिरोध टूट गया है और यह नई अखंडता या हस्ताक्षर प्रणालियों के लिए एक अच्छा विकल्प नहीं है। HMAC कुंजीबद्ध प्रमाणीकरण है, अप्रमाणित बाइट्स को पचाने के समान ऑपरेशन नहीं।

टेकअवे: ब्राउज़र में पहले से ही एक हैश फ़ंक्शन है - ToolAcre SHA हैश कैलकुलेटर बिल्कुल इसी API का उपयोग करता है, इसलिए इसका आउटपुट ब्राउज़र का अपना है

ब्राउज़र पहले से ही SHA-256 प्रदान करता है: टेक्स्ट को बाइट्स के रूप में एन्कोड करें, डाइजेस्ट का इंतजार करें, फिर तुलना के लिए इसके परिणाम को प्रारूपित करें। ToolAcre SHA हैश कैलकुलेटर चिपकाए गए टेक्स्ट के लिए उस पथ का अनुसरण करता है और SHA-1 को केवल विरासत के रूप में लेबल करता है। पहले ज्ञात परिणाम के साथ एबीसी की तुलना करें, फिर वास्तविक गैर-संवेदनशील सामग्री को हैश करें जिसके बाइट्स और एन्कोडिंग आप समझते हैं।