【发布时间】:2022-05-13 05:43:26
【问题描述】:
我正在加密 URL 并将工作脚本从 PHP 转换为 ColdFusion。我已经完成了 95% 的工作,但是在尝试了 StackOverflow 上的许多可用解决方案后,我被困在了这一点上。我的结果仍然不匹配。我确认两个脚本上的 saltBin 和 keyBin 值相同。请看一看。
PHP版本
$saltBin = R�k��E�x^ �O<�-�7J=S�z��� �;
$keyBin = �;B��|� �0U,��h�NS+��.��G���
res = hash_hmac(\'sha256\', $saltBin, $keyBin);
result
39ddcd6156a30fdcebc9fbf5dd59a0ef4f47e27841bbc12ce72b64a0a63c0324
冷融合版
<cfset res = hmac(saltBin,keyBin,\"HMACSHA256\")>
result
30A658BEB3965C2D7D27A3F717FB6C13B05ED44E8B2A5A7FEBB9B57887CF57A0
我尝试了以下解决方案
ColdFusion equivalent to PHP hash_hmac
coldfusion hashing and difference between hmacSHA256 and SHA256
更新:
以下是PHP version 的缩写版本
$key = \'943b421c9eb07c830af81030552c86009268de4e532ba2ee2eab8247c6da0881\';
$salt = \'520f986b998545b4785e0defbc4f3c1203f22de2374a3d53cb7a7fe9fea309c5\';
$keyBin = pack(\"H*\" , $key);
$saltBin = pack(\"H*\" , $salt);
$path = \"/rs:fill:300:300:1/g:no/aHR0cDovL2ltZy5leGFtcGxlLmNvbS9wcmV0dHkvaW1hZ2UuanBn.png\";
echo hash_hmac(\'sha256\', $saltBin.$path, $keyBin);
结果:7062c2b5786c82de963767de4b0cdbc4e7ed7db2ce7466708bf8a28d8572888b
<cfset key = \'943b421c9eb07c830af81030552c86009268de4e532ba2ee2eab8247c6da0881\'>
<cfset salt = \'520f986b998545b4785e0defbc4f3c1203f22de2374a3d53cb7a7fe9fea309c5\'>
<cfset keyBin = binaryDecode(key, \'hex\')>
<cfset keyBin = toString(keyBin)>
<cfset saltBin = binaryDecode(salt, \'hex\')>
<cfset saltBin = toString(saltBin)>
<cfset path = \"/rs:fill:300:300:1/g:no/aHR0cDovL2ltZy5leGFtcGxlLmNvbS9wcmV0dHkvaW1hZ2UuanBn.png\">
<cfset result = hmac(saltBin&path,keyBin,\"HMACSHA256\")>
<cfoutput>#result#</cfoutput>
结果:FFA7A526BB464CA1470F309605F1ED63832342B704F8475BFAF26CCD1092603B
任何人都可以在这方面帮助我吗?
谢谢。
-
我们需要查看显示
$saltBin和$keyBin实际填充方式的代码。此外,在处理二进制文件时,最好将值发布为 base64 编码字符串base64_encode。$saltBin和$keyBin的 base64 编码值是什么? -
@SOS 我在问题末尾的链接中添加了完整的脚本。请检查。
-
不知道为什么有人投票结束这个问题为“寻求书籍、工具、软件库等的建议”。它显然是关于特定的代码问题,并提供了代码示例和结果。
标签: php hash coldfusion sha256