2012-12-21 36 views
6

मैं सोफेडबी पर लगाए गए अनुलग्नक के एमडी 5 डाइजेस्ट का उपयोग करने की कोशिश कर रहा हूं, लेकिन मुझे समझ में नहीं आता कि यह किस प्रारूप का उपयोग करता है।कॉच डीबी अटैचमेंट का एमडी 5 डाइजेस्ट प्रारूप क्या है?

{ 
"_id":"ef467479af422db0c388fa00b3000d40", 
"_rev":"3-6d1015e7d25103180817136eefa9f942", 
"_attachments":{ 
    "foo":{ 
     "content_type":"application/octet-stream", 
     "revpos":2, 
     "digest":"md5-yDbs1scfYdqqLpxyFb1gFw==", 
     "length":1952913,"stub":true } 
    } 
} 

कि एमडी 5 हेक्साडेसिमल नहीं है लेकिन फिर भी यह ASCII है, मैं इसका उपयोग कैसे करूं?

उत्तर

7

md5- उपसर्ग के बाद डाइजेस्ट का हिस्सा बेस -64 प्रारूप में दिखता है।

यदि जावास्क्रिप्ट में पार्सिंग है, तो atob फ़ंक्शन इसे वापस बाइनरी डेटा में बदल सकता है।

ऊपर मान लिया जाये कि सही है तो हेक्साडेसिमल बराबर है:

c8 36 ec d6 c7 1f 61 da aa 2e 9c 72 15 bd 60 17 
+0

यह था, धन्यवाद, अब मैं इसका उपयोग करने में सक्षम हूं। मैं आपके उत्तर ASAP –

+0

बीटीडब्लू को स्वीकार करूंगा जो जावा में बेस 64 एमडी 5 प्राप्त करने में रुचि रखते हैं: [link] (http://stackoverflow.com/questions/3479067/how-to-decode-with-messagedigest-base64) –

0

का उपयोग कर NodeJS आप एक "सामान्य" हेक्स स्ट्रिंग में बेस 64 पचाने इनकोडिंग बदल सकते हैं CouchDB द्वारा प्रयोग किया जाता डाइजेस्ट प्रारूप के साथ काम करने के लिए देख किसी को भी के लिए "md5-" उपसर्ग दूर करने और फिर से कार्य करें:

new Buffer('yDbs1scfYdqqLpxyFb1gFw==', 'base64').toString('hex') 

अन्य तरीके से जाने के लिए और एक हेक्स मान से डाइजेस्ट स्ट्रिंग बनाने के लिए:

new Buffer('c836ecd6c71f61daaa2e9c7215bd6017', 'hex').toString('base64')