前端用 crypto-js 做 MD5 加密为啥结果和后端对不上?

明昊 ☘︎ 阅读 11

我用 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,看起来一样啊……但实际联调时登录一直失败,怀疑是不是中间有隐藏字符或者编码问题?

我来解答 赞 6 收藏
二维码
手机扫码查看
1 条解答
❤玉丹
❤玉丹 Lv1
多半是传参时多了换行符之类的玩意,我一般直接这么搞:

const password = '123456'.trim();
const hash = CryptoJS.MD5(password).toString(CryptoJS.enc.Hex);
console.log(hash);


注意两点:1. 记得trim掉空白 2. 确保用Hex格式输出。后端那边要是还不对,让他们把收到的原始字符串hex dump出来看看有没有鬼。
点赞 1
2026-03-09 21:36