2013-01-17 44 views
7

यहाँ मेरी कोड nhB9nTcrtoJr2B01QqQZ1g== मेंNodeJS base64 साथ md5 पचाने एल्गोरिथ्म गलत परिणाम

var sig = crypto.createHash('md5') 
    .update('The quick brown fox jumps over the lazy dog') 
    .digest('base64'); 
console.log(sig) 

परिणाम (मैक ओएस एक्स पर) है।

मैं एक आईओएस ऐप से एक ही हस्ताक्षर उत्पन्न करने की कोशिश कर रहा हूं। स्ट्रिंग

The quick brown fox jumps over the lazy dog

md5 करने के लिए परिवर्तित , मैं 9e107d9d372bb6826bd81d3542a419d6,

हो और बेस 64 इस के है: परिणाम ऑनलाइन कनवर्टर साइटों में के रूप में उद्देश्य सी में ही कर रहे हैं OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=

ये तार अलग क्यों हैं? क्या यह नहीं है कि nodejs crypto मॉड्यूल क्या कर रहा है? एमडी 5 हैश को बेस 64 के साथ पचाने के लिए नोडजेस एल्गोरिदम के बराबर क्या हैं?

+0

बस मुझे यकीन है कि मैं सवाल समझता हूं। क्या आप स्ट्रिंग के एमडी 5 हैश चाहते हैं 'बेस ब्राउन में एन्कोडेड आलसी कुत्ते पर त्वरित ब्राउन फॉक्स कूदता है या क्या आप स्ट्रिंग को स्वयं बेस 64 में परिवर्तित करना चाहते हैं? –

+0

@ थॉमस वॉटसन, मैं 'त्वरित भूरे रंग के लोमड़ी' के एमडी 5 हैश की बेस 64 एन्कोडेड स्ट्रिंग चाहता हूं। – nikravi

उत्तर

13

स्ट्रिंग OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY= स्ट्रिंग 9e107d9d372bb6826bd81d3542a419d6 का बेस 64 एन्कोडेड संस्करण है जो इसमें सादा पाठ स्ट्रिंग The quick brown fox jumps over the lazy dog का md5 हैश है।

var crypto = require('crypto'); 
var s = 'The quick brown fox jumps over the lazy dog'; 
var md5 = crypto.createHash('md5').update(s).digest('hex'); 

अब आप हेक्स (9e107d9d372bb6826bd81d3542a419d6) के रूप में MD5 हैश है:

आप नोड में ऐसा करना चाहते हैं, तो पहले आपको हेक्स में MD5 हैश निकलना है। अब आपको बस इसे करना है 6464:

new Buffer(md5).toString('base64'); 
+0

धन्यवाद, थॉमस! – nikravi

+4

क्या आप अभी '.digest()। ToString (' base64 ') का उपयोग नहीं कर सकते हैं? बीटीडब्लू आपको सही तरीके से काम करने के लिए 'नया बफर (एमडी 5,' हेक्स ')' की आवश्यकता होगी, अब आपको हेक्स डाइजेस्ट का बेस 64 मिल रहा है, न कि मूल बाइनरी हैश। – Fluffy