最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

nodejs md5计算中文utf-8编码

编程开发 511浏览 0评论

nodejs中计算md5值可以用crypto中的方法,代码如下:

// text为需要编码的字符串
crypto.createHash('md5').update(text, 'utf-8').digest('hex')

这边有一个坑要稍微留意下,就是update方法后的utf-8参数,在编码中文utf-8的时候需要增加,否则计算出来的md5值和php,java计算出来的不一致。在签名计算的场景过程中会出现签名不匹配的情况。

nodejs计算md5值

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编码

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址