PHP 和 Javascript sha256 值不匹配

Posted

技术标签:

【中文标题】PHP 和 Javascript sha256 值不匹配【英文标题】:PHP and Javascript sha256 value not matching 【发布时间】:2022-01-16 11:12:47 【问题描述】:

php

$apiKey='1DxhT7xiQPcliOnWLO/IOf74VqwxCCohJAhf8AE4TzmyAUqPawKEOQOKBMEu3Cqnbm1DJTbNje//J8W4QqU83Zg==';
$hashValue=(hash_hmac(
    'sha256', 
    'orgID=6197bf9239fef3001b9241c2&userIdentifier=2717&isCorporate=true',
    utf8_decode($apiKey)
));
//Value is : 787a88e590659ea889a8081b35043a9a5fb092af7e69736920c96109dc511182

JS

const CryptoJS = require('crypto-js');
const secret = 'DxhT7xiQPcliOnWLO/IOf74VqwxCCohJAhf8AE4TzmyAUqPawKEOQOKBMEu3Cqnbm1DJTbNje//J8W4QqU83Zg==';
const hmac = CryptoJS.HmacSHA256(
    'orgID=6197bf9239fef3001b9241c2&userIdentifier=2717&isCorporate=true', 
    secret
);
const hash = hmac.toString(CryptoJS.enc.Hex); //_HMAC_Hash_asHex_

console.log(hash);

//Value is : 2f577ba975be5f76df586f5536bf9c0ae8328a90de2a60d8be8bef29aea5f4c5

【问题讨论】:

您的$apiKeysecret 值不匹配。 您的 $apiKeysecret 不匹配:$apiKey='1DxhT7...secret = 'DxhT7...。此外,utf8_decode 在那里完全没有意义。 【参考方案1】:

你的 $apiKey 和const secret 不同。请检查

$apiKey='1DxhT7xiQPcliOnWLO/IOf74VqwxCCohJAhf8AE4TzmyAUqPawKEOQOKBMEu3Cqnbm1DJTbNje//J8W4QqU83Zg==';
const secret = 'DxhT7xiQPcliOnWLO/IOf74VqwxCCohJAhf8AE4TzmyAUqPawKEOQOKBMEu3Cqnbm1DJTbNje//J8W4QqU83Zg==';

【讨论】:

以上是关于PHP 和 Javascript sha256 值不匹配的主要内容,如果未能解决你的问题,请参考以下文章

PHP 之sha256 sha512封装

PHP 之sha256 sha512封装

各种语言HMAC SHA256实现

用于登录密码的 PHP 盐和哈希 SHA256

TEC-007 java和php SHA-256 签名和延签

php PHP和ASP.NET HMAC-SHA256签名