2013-01-17 5 views
7

を消化する私のコード(Mac OS Xの)nhB9nTcrtoJr2B01QqQZ1g==は、base64でMD5はここアルゴリズム間違った結果

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

結果があるnodejs。

私は、iosアプリケーションから同じ署名を生成しようとしています。結果は、オンラインコンバータサイトのように客観Cで同じです:文字列

The quick brown fox jumps over the lazy dog

MD5に変換し、私は 9e107d9d372bb6826bd81d3542a419d6

を取得し、これをbase64でがありますOWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=

なぜこれらの文字列が異なるのですか?これは、nodejs暗号モジュールがやっていることではありませんか? md5ハッシュをbase64で消化するためのnodejsアルゴリズムに相当するものは何ですか?

+0

私は質問を理解していると確信しています。文字列のmd5ハッシュをbase64にエンコードされた '怠惰な犬の上にジャンプする'という文字列のほうが好きですか、それともbase64に変換された文字列が必要ですか? –

+0

@ThomasWatson、私は 'クイックブラウンキツネのmd5ハッシュのbase64エンコードされた文字列が欲しい。 – nikravi

答えて

13

文字列OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=は、文字列9e107d9d372bb6826bd81d3542a419d6のbase64でエンコードされたバージョンで、プレーンテキスト文字列The quick brown fox jumps over the lazy dogのmd5ハッシュに対応しています。

あなたはノードでこれを実行したい場合は、最初のヘクスに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ハッシュを持っています。これでb​​ase64に変換するだけです:

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

ありがとう、トーマス! – nikravi

+4

'.digest()。toString( 'base64')'を使用できませんか?ところで、これが正しく動作するためには '新しいバッファ(md5、 'hex')'が必要です。元のバイナリハッシュではなく16進ダイジェストのbase64が得られます。 – Fluffy

関連する問題