nodejs中文md5与php结果不一致
作者在做流量接口时遇到了一个典型的跨语言互操作问题:Node.js和PHP对同一段中文字符串进行MD5加密,竟然产生了不同的结果,直接导致签名校验失败。而英文字符串则能通过,说明问题根源并不在算法本身。 经过排查,确认这是字符编码差异导致的经典坑点。Node.js的`crypto`模块在计算哈希时,如果没有显式指定输入字符串的编码,默认可能使用与PHP不同的字符集进行字节转换,从而生成不同的MD5值。文章给出了一个简洁的修复方案:在调用`instance.update()`方法时,第二个参数明确传入`'utf8'`,强制使用统一的UTF-8编码。 这个小坑的解决成本虽低,但排查时容易让人迷惑。作者通过实践验证了显式编码指定的必要性,确保了不同语言栈间哈希结果的一致性,为处理多语言环境的签名验证提供了直接参考。