2010-03-17 12 views
5

मैं जावास्क्रिप्ट में लागू sha1 एल्गोरिदम की तुलना में कुछ परीक्षण चला रहा हूं - http://pajhome.org.uk/crypt/ से प्राप्त हुआ - सी # में इसके कार्यान्वयन के साथ।जावास्क्रिप्ट में SHA1 बेस 64 एल्गोरिदम और सी #

सी # का उपयोग करना { 'विधि': 'people.get'} के लिए हैश प्राप्त करने के लिए मैं इस बयान का उपयोग कर रहा:

Convert.ToBase64String(new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes("{'method':'people.get'}"))); 

जो मुझे Qy95a0ShZqhbNdt6IF8qNf72jX0=

देता जावास्क्रिप्ट में मैं लगभग मिल एक ही: Qy95a0ShZqhbNdt6IF8qNf72jX0 कथन का उपयोग:

b64_sha1("{'method':'people.get'}"); 

जावास्क्रिप्ट मामले में, हैश एक बराबर (=) चिह्न के साथ अंत नहीं है।

क्या यह अंतर मुझे सर्वर के विरुद्ध प्रमाणीकरण में परेशानी का कारण बन सकता है?

मेरे मामले में, जैसा कि आप में से कई जानते हैं, हैश मैं मान रहा हूं कि वाक्य http बॉडी के अंदर जाता है और सर्वर इसे देखेगा।

धन्यवाद

उत्तर

5

रिसीवर पर निर्भर करते हैं, लेकिन साथ सी # जावास्क्रिप्ट से अपने परिणाम डिकोडिंग कोशिश करते हैं और आप एक अपवाद मिल जाएगा चाहेंगे। सही लंबाई तक परिणाम पैड करने के लिए = चिह्न है।

http://en.wikipedia.org/wiki/Base64

+0

ठीक है, उस जानकारी के आधार पर मैंने देखा है कि = चिह्न, जैसा कि आपने बताया है, संदेश को पैडिंग के लिए उपयोग किया जाता है। धन्यवाद – Andres

+3

@ एंड्रेस: ​​आप pajhome.org.uk से 'sha1.js' फ़ाइल के लाइन 15 को पैडिंग कैरेक्टर के रूप में' = 'का उपयोग करने के लिए अपडेट कर सकते हैं। – LukeH

+0

हां, जबकि मैं अपना उत्तर लिख रहा था, आप इस टिप्पणी को लिख रहे थे। धन्यवाद :) – Andres

4

sha1.js lib मैं अपने प्रश्न में आपका उल्लेख से, एक वैश्विक चर b64pad कहा जाता है, गद्दी के प्रयोजन के लिए इस्तेमाल किया है। डिफ़ॉल्ट रूप से इसका मान "" है। "=" में बदलकर सटीक हैश को सी # एपीआई

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