nodejs md5与base64摘要algorithm错误的结果

这是我的代码

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中的结果与在线转换器站点中的结果相同: string

The quick brown fox jumps over the lazy dog

转换为md5 ,我得到了9e107d9d372bb6826bd81d3542a419d6

而这个base64OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=

为什么这些string不同? 这不是nodejsencryption模块正在做什么? 获得用base64消化的md5哈希的nodejsalgorithm的等价物是什么?

stringOWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=是stringOWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=的base64编码版本,它是纯文本string的md5散列。 The quick brown fox jumps over the lazy dog

如果你想在节点上做到这一点,你首先必须得到在hexmd5哈希:

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

现在你有hex的md5散列( 9e107d9d372bb6826bd81d3542a419d6 )。 现在你所要做的就是把它转换成base64:

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