nodejs md5 与 php md5 中英文加密结果不一样,怎么办?
发布于 10 年前 作者 dmpx 10356 次浏览 最后一次编辑是 8 年前 来自 问答

nodejs md5 md5.update(‘DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001af1638ec24f26b0a565be23’, ‘utf8’); 结果:82d5e459b1846c545bdcadcf11cc4057

php md5 md5(“DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001af1638ec24f26b0a565be23”); 结果:d5d5016d1097f3ebf6ab3049b9341dc2

单独加密结果是正确的,但混合中英文,两者结果就不一样了。

8 回复

http://3v4l.org/dj88f

<?php
print md5('DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001af1638ec24f26b0a565be23');

Output:

82d5e459b1846c545bdcadcf11cc4057

怪了,在我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’);

回到顶部