nodejs md5与base64摘要算法错误的结果

时间:2013-01-17 21:49:04

标签: node.js base64 md5

这是我的代码

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

并且 base64 OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=

为什么这些字符串不同?这不是nodejs加密模块正在做的吗? 用于获取用base64消化的md5哈希的nodejs算法的等价物是什么?

1 个答案:

答案 0 :(得分:15)

字符串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');

现在你有md5哈希为十六进制(9e107d9d372bb6826bd81d3542a419d6)。现在你所要做的就是将它转换为base64:

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