2012-12-21 20 views
6

Tôi đang cố gắng sử dụng bản md5 của tệp đính kèm mà tôi đã đặt trên CouchDB, nhưng tôi không thể hiểu định dạng của nó.Định dạng thông tin md5 của tệp đính kèm CouchDB là gì?

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

Md5 đó không phải là hệ thập lục phân nhưng vẫn là ASCII, làm cách nào để sử dụng?

Trả lời

7

Phần thông báo sau tiền tố md5- trông giống như ở định dạng Base-64.

Nếu phân tích cú pháp trong Javascript, chức năng atob có thể biến nó trở lại thành dữ liệu nhị phân.

Giả sử ở trên là đúng thì tương đương với thập lục phân là:

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

đó là nó, cảm ơn bạn, bây giờ tôi có thể sử dụng nó. Tôi sẽ chấp nhận câu trả lời của bạn ASAP –

+0

BTW quan tâm đến cách lấy bas64 md5 trong java: [link] (http://stackoverflow.com/questions/3479067/how-to-decode-with-messagedigest-base64) –

0

Đối với bất cứ ai tìm cách để làm việc với các định dạng tiêu hóa được sử dụng bởi couchdb sử dụng nodejs bạn có thể tắt mã hóa base64 tiêu hóa thành một chuỗi hex "bình thường" bằng cách loại bỏ các "md5-" tiền tố và sau đó làm:

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

Để đi theo con đường khác và tạo ra chuỗi tiêu hóa từ một giá trị hex:

new Buffer('c836ecd6c71f61daaa2e9c7215bd6017', 'hex').toString('base64') 
Các vấn đề liên quan