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

PHP生成的SHA256哈希与Java Guava不一致,求PHP端解决方案

问题根源与PHP端修复方案

两者哈希结果不匹配的核心原因是字符串编码处理逻辑不同:

  • Java Guava的hashUnencodedChars方法,会把字符串中的每个char以**UTF-16BE(大端序16位Unicode编码)**格式转换为字节流,再计算SHA256哈希。
  • PHP的hash("sha256")默认是将字符串按UTF-8编码成字节后计算哈希,编码方式的差异直接导致了结果不一致。

要在PHP端匹配Java的哈希结果,只需把字符串转换成UTF-16BE编码后再哈希,修复后的代码如下:

$salt = "0123456789012345";
$password = "password";
$combinedStr = $salt . "|" . $password;
// 转换为UTF-16BE编码(确保原字符串为UTF-8格式)
$utf16beBytes = mb_convert_encoding($combinedStr, 'UTF-16BE', 'UTF-8');
// 计算SHA256哈希
echo hash("sha256", $utf16beBytes);

执行这段PHP代码,输出结果会和Java代码的输出完全一致:818112d34d341ace8b9325fce61e676a125f733e25c28c9ed172c1f7d2c3aa6c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:15:30