You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CryptoJS配合PHP使用时返回错误哈希值的问题求助

问题原因

PHP 中 sha1() 函数默认返回 40 位的十六进制字符串,调用 md5(sha1("504099")) 实际是对 SHA1 输出的十六进制明文串做 MD5 计算。而 CryptoJS 的 CryptoJS.SHA1() 返回的是内部的 WordArray 类型对象,直接传入 CryptoJS.MD5() 时,是对该二进制对象本身做哈希,而非对十六进制字符串做哈希,这是两端结果不一致的核心原因。

解决方法

你需要先将 SHA1 的计算结果显式转为十六进制字符串,再传入 MD5 做计算即可,正确写法如下:

const sha1HexStr = CryptoJS.SHA1("504099").toString(CryptoJS.enc.Hex);
const finalHash = CryptoJS.MD5(sha1HexStr).toString(CryptoJS.enc.Hex);
// 输出结果为 6a6543b825b80c5bddfa7fcf27395a4c,和PHP侧返回结果完全匹配
验证说明

字符串 "504099" 的 SHA1 十六进制结果为 9a6233d414975e433017665c38d70e4f7d6d724e,对该字符串做 MD5 计算得到的结果和 PHP 侧返回值完全一致。

内容的提问来源于stack exchange,提问作者Moas Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:06