2011-12-29 11 views
6

हर बार ब्राउज़र के नए संस्करण दिखाई देते हैं, मैं नई सामग्री को जोड़ने के बारे में सुनता हूं, जैसे कि वेबजीएल और अन्य तकनीकों का कहना है कि कोई भी वास्तव में जानता है कि वे पकड़ते हैं या नहीं।क्या नवीनतम ब्राउज़र में कोई भी अंतर्निहित जावास्क्रिप्ट स्ट्रिंग हैश फ़ंक्शन है?

लेकिन मुझे आश्चर्य है कि किसी ने कभी जेएस में हैशिंग फ़ंक्शंस (MD5, SHA1 और इसी तरह) जैसी मूलभूत सामग्री के बारे में सोचा था।

नवीनतम ब्राउज़रों से मेरा आज के विकास संस्करणों मतलब भी ओपेरा 12, क्रोम 17 या Firefox 10

समाधान के लिए अब देख रहे हैं की तरह मैं यहाँ एक और धागा पर इस टिप्पणी को मिला: https://stackoverflow.com/questions/7204097/short-hashing-function-for-javascript ( क्या आप जानते हैं कि पहले से ही javascript ऑब्जेक्ट हैशटेबल्स हैं?)। तो ये 'हैशटेबल' क्या हैं? क्या इसका मतलब यह है कि मैं किसी भी स्ट्रिंग को हैश में बना सकता हूं, लेकिन एमडी 5 या शा 1 की तरह स्थापित नहीं है लेकिन कुछ जेएस विशिष्ट में निर्मित हैं?

मूल रूप से मैं क्या करने की जरूरत है:

var txt="Hello world!"; 
var hash = txt.toSha1(); 
+1

आप हैश तालिकाओं भ्रमित करने के लिए ('एक वस्तु जो नामित कुंजी के खिलाफ मान संग्रहीत कर लेता,' {: "बॉब", जन्म तिथि "27/1/1970" नाम}) की तरह दिखाई देते हैं एमडी 5 की तरह एक छोटे से डेटा पर सेट किया गया एक बड़ा डेटा) – Quentin

+0

हां, अब मैं समझता हूं कि जो कुछ मैं ढूंढता हूं उसके पास हैश टेबल से कुछ लेना देना नहीं है। – rsk82

उत्तर

0

Paul Johnston निम्नलिखित एल्गोरिदम लागू किया गया है जावास्क्रिप्ट में

MD5, RIPEMD-160, SHA-1, SHA-256 और SHA-512

आप स्रोत कोड और यहाँ कुछ उदाहरण मिल सकते हैं: http://pajhome.org.uk/crypt/md5/

मैं इस आशा है कि तुम क्या एल थे के लिए ooking।

+4

हां तरह की तरह। लेकिन मेरा सवाल ब्राउज़र में नए विकास के बारे में था, उन्होंने लगातार नए कार्य को रखा और मुझे आश्चर्य हुआ कि क्या वे अंततः हैश भी जोड़ते हैं। क्या यह कभी योजनाबद्ध है, या डिज़ाइन द्वारा ऐसा होना चाहिए क्योंकि कुछ इस मुद्दे को अवरुद्ध कर रहा है? – rsk82

+0

ओह, मैं देखता हूं कि ब्राउजर के संदर्भ में मुझे पता नहीं है, लेकिन यदि आप [node.js] (http://nodejs.org/) का उपयोग कर रहे हैं तो पहले से ही एक [क्रिप्टो पैकेज] है (http:/1 _encoding_ कि कम सादा में प्लेन टेक्स्ट बदल जाता है, और इनपुट से _larger_ उत्पादन: /nodejs.org/docs/latest/api/crypto.html) है कि चीजों में से इन प्रकार के हैंडल –

-7

जब मैं बाहरी पुस्तकालयों के बिना सरल ग्राहक के पक्ष हैशिंग की जरूरत है मैं का उपयोग 'ब्राउज़रों atob() और btoa() कार्यों में बनाया गया।

window.btoa() बाइनरी डेटा की "स्ट्रिंग" से बेस -64 एन्कोडेड ASCII स्ट्रिंग बनाता है।

function utf8_to_b64(str) { 
    return window.btoa(encodeURIComponent(escape(str))); 
} 

window.atob() फ़ंक्शन डेटा जो आधार -64 एन्कोडिंग का उपयोग इनकोडिंग किया गया है की एक स्ट्रिंग डीकोड।

function b64_to_utf8(str) { 
    return unescape(decodeURIComponent(window.atob(str))); 
} 

http://caniuse.com/#search=btoa और http://caniuse.com/#search=atob से पता चलता है कि यह बेहद आधुनिक ब्राउज़रों

उदाहरण से https://developer.mozilla.org/en-US/docs/Web/API/window.btoa

नोट ले लिया द्वारा समर्थित है: ऊपर समाधान कोई बाहरी पुस्तकालय निर्भरता है। जैसा ऊपर बताया गया है, केवल सरल एन्क्रिप्शन के लिए इसका उपयोग करें। यदि आप एक सुरक्षित क्रिप्टोग्राफिक समाधान की तलाश में हैं तो इसका उपयोग न करें।

+5

यह एक उपयोगी प्रतिवर्ती 1 है। दोनों यहां मांगे जाने वाले एक-तरफा क्रिप्टोग्राफिक हैश कार्यों के गुणों का विरोध कर रहे हैं। – ecmanaut

3

किसी के लिए अभी भी इस जानकारी की तलाश है। वहाँ एक WebCrypto API जो 2017

की शुरुआत एक ब्राउज़र में उसका उपयोग करने में अंतिम रूप दिया गया प्रतीत होता है, आप इसे window.crypto.subtle जो एन्क्रिप्शन के लिए तरीकों में शामिल है पर पा सकते हैं, उपलब्ध कार्यों here पर आदि प्रलेखन हज़म।एक हैश समारोह (मानचित्रण के लिए एक समारोह के साथ

संबंधित मुद्दे