前端用 crypto-js 做 MD5 加密为啥结果和后端对不上?
我用 crypto-js 对用户密码做 MD5 摘要,但传给后端后发现和他们算的不一致,是不是哪里编码错了?
我试过直接传字符串,也试过转 UTF-8,但结果还是不一样。后端说是用标准 MD5,没加盐也没其他处理。
import CryptoJS from 'crypto-js';
const password = '123456';
const hash = CryptoJS.MD5(password).toString();
console.log(hash); // 输出:e10adc3949ba59abbe56e057f20f883e
可后端用 Python 的 hashlib.md5(b’123456′) 算出来也是 e10adc3949ba59abbe56e057f20f883e,看起来一样啊……但实际联调时登录一直失败,怀疑是不是中间有隐藏字符或者编码问题?
注意两点:1. 记得trim掉空白 2. 确保用Hex格式输出。后端那边要是还不对,让他们把收到的原始字符串hex dump出来看看有没有鬼。