项目中使用md5加密,发现如果字符串中包含中文时,加密得到的字符串与服务端加密后的服务端不一致的问题。

发现在本地测试的时候没有问题,部署到服务器上后就有问题。

原因:

本地服务器响应头Content-type中包含charset:UTF-8, 而服务端响应头中没有。

解决方法

  1. 如果是使用nginx,通过nginx配置响应头。js文件添加charset:UTF-8
  2. 通过CryptoJS代码处理
    1
    2
    3
    4
    import { MD5, enc } from 'crypto-js'

    let str = '测试'
    MD5(enc.Utf8.parse(str)).toString()

本文地址: http://gehaiqing.com/2019/12/23/js-md5-chinese/