10

ここに私のコードがあります

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

nhB9nTcrtoJr2B01QqQZ1g==(Mac OS X の場合) になります。

iOS アプリから同じ署名を生成しようとしています。目標 c の結果は、オンライン コンバーター サイトと同じです

The quick brown fox jumps over the lazy dog

md5に 変換すると9e107d9d372bb6826bd81d3542a419d6

これのbase64OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=.

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

4

1 に答える 1

17

文字列OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=は、文字列の base64 でエンコードされたバージョンであり9e107d9d372bb6826bd81d3542a419d6、それ自体がプレーン テキスト文字列の md5 ハッシュですThe quick brown fox jumps over the lazy dog

ノードでこれを行う場合は、最初に md5 ハッシュを 16 進数で取得する必要があります。

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

これで、md5 ハッシュが 16 進数 ( 9e107d9d372bb6826bd81d3542a419d6) になりました。あとは base64 に変換するだけです:

new Buffer(md5).toString('base64');
于 2013-01-17T22:11:53.023 に答える