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
,
而这个base64是OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=
。
为什么这些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');