nodejs md5 与 php md5 中英文加密结果不一样,怎么办?
发布于 11 年前 作者 dmpx 10853 次预览 最后一次回复是 10 年前 来自 问答
nodejs md5 md5.update(‘DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001af1638ec24f26b0a565be23’, ‘utf8’); 结果:82d5e459b1846c545bdcadcf11cc4057
php md5 md5(“DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001af1638ec24f26b0a565be23”); 结果:d5d5016d1097f3ebf6ab3049b9341dc2
单独加密结果是正确的,但混合中英文,两者结果就不一样了。
8 回复
http://3v4l.org/dj88f
Output:
怪了,在我php 5.6.0 上生成的就是:d5d5016d1097f3ebf6ab3049b9341dc2
看这个地址
检查文件编码是不是 UTF-8
82d5e459b1846c545bdcadcf11cc4057 我在这里跑的:http://writecodeonline.com/php/
php 文件编码为:GB2312 print_r(md5(‘中国双方的首送达方式发斯蒂芬.cn’)); 0ce165b19e51f6a8ede0bd17508eba46
Nodejs 文件编码为:GB2312 crypto.createHash(‘md5’).update(‘中国双方的首送达方式发斯蒂芬.cn’).digest(‘hex’); cd9e8c6fac492a12318952291211c3a7
node的中文md5时update()的参数用new Buffer(’’).toString(“binary”)试下
crypto.createHash(‘md5’).update(‘DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001af1638ec24f26b0a565be2’,‘utf8’).digest(‘hex’);