nodejs中计算md5值可以用crypto中的方法,代码如下:
// text为需要编码的字符串 crypto.createHash('md5').update(text, 'utf-8').digest('hex')
这边有一个坑要稍微留意下,就是update方法后的utf-8参数,在编码中文utf-8的时候需要增加,否则计算出来的md5值和php,java计算出来的不一致。在签名计算的场景过程中会出现签名不匹配的情况。

nodejs计算md5值
var crypto = require('crypto'); var text = "hello"; var textmd5 = crypto.createHash('md5').update(text).digest('hex'); var textmd5utf8 = crypto.createHash('md5').update(text, 'utf-8').digest('hex'); console.log(textmd5); console.log(textmd5utf8); // output: // 5d41402abc4b2a76b9719d911017c592 // 5d41402abc4b2a76b9719d911017c592 var textcn = "hello 世界"; var textcnmd5 = crypto.createHash('md5').update(textcn).digest('hex'); var textcnmd5utf8 = crypto.createHash('md5').update(textcn, 'utf-8').digest('hex'); console.log(textcnmd5); console.log(textcnmd5utf8); // output: // 99b8fa1c74ade005bfa1442b649647f4 // 1aaa8e8010645fe4e3d44ad9745bb94e
从代码可以看到,中文的字符串,加utf-8和不加计算出来的值是不一样的。在php,java中计算出来都是 1aaa8e8010645fe4e3d44ad9745bb94e,和加utf-8的才是一致的。
转载请注明:快乐编程 » nodejs md5计算中文utf-8编码
encoding = 'binary';
node 6.x版本以前。。。加上了以这么一句,本来是默认是buffer,结果成了binary,然后中文就GG和 别的语言的标准就不一样,就导致各个语言之间不一样!~!~!~