2013-01-17 16 views
7

tutaj jest mój kodnodejs md5 z base64 Digest Algorithm zły wynik

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

skutkuje nhB9nTcrtoJr2B01QqQZ1g== (w Mac OS X).

Próbuję wygenerować ten sam podpis z aplikacji ios. Wyniki są takie same w Objective C, jak w witrynach konwerterów online: ciąg

The quick brown fox jumps over the lazy dog

konwertowane do md5, mam 9e107d9d372bb6826bd81d3542a419d6,

i base64 tego jest OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=.

Dlaczego te struny są różne? Czy to nie działa moduł kryptograficzny nodejs? Jakie są odpowiedniki algorytmu nodejs dla uzyskania skrótu md5 z wykorzystaniem base64?

+0

Tak, jestem pewien, że rozumiem to pytanie. Czy chcesz mieć skrót md5 napisu "Szybki brązowy lis przeskakuje nad leniwym psem" zakodowanym w base64 lub czy chcesz, aby ciąg sam się przekształcił w base64? –

+0

@ThomasWatson, Chcę, aby kodowany przez base64 ciąg skrótu md5 "Szybki brązowy lis" ... – nikravi

Odpowiedz

13

Łańcuch OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY= jest wersją kodowaną w standardzie base64 9e107d9d372bb6826bd81d3542a419d6, która jest w niej skrótem md5 zwykłego łańcucha tekstowego The quick brown fox jumps over the lazy dog.

Jeśli chcesz to zrobić w węźle trzeba najpierw uzyskać mieszania MD5 w hex:

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

Teraz masz hash md5 jako hex (9e107d9d372bb6826bd81d3542a419d6). Teraz wszystko, co musisz zrobić, to przekonwertować go na base64:

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

Dziękuję, Thomas! – nikravi

+4

Nie możesz po prostu użyć '.digest(). ToString ('base64')'? BTW potrzebowałbyś 'nowego bufora (md5, 'hex')' aby to działało poprawnie, teraz dostajesz base64 z hex hex, nie z oryginalnego hasha binarnego. – Fluffy