【发布时间】:2021-12-21 03:49:29
【问题描述】:
我正在使用 php 8.0.11,我必须生成一个 SHA256 加密消息签名。当我在预请求脚本中使用 javascipt 代码在邮递员中测试 API 时,它会给出正确的加密消息签名,我将脚本转换为 php我在 php 中对其进行测试,它发送了一个不同的错误加密消息签名(密钥和消息是假的):
javascript 代码(邮递员中的预请求脚本):
let msg='mymessage'
const hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,"myapipkey");
hmac.update(msg);
const messageSignature = hmac.finalize().toString();
pm.globals.set("messageSignature",messageSignature);
console.log('messageSi:',pm.globals.get('messageSignature'))
````
php code:
````php
$data_to_hash = "mymessage";
$data_hmac=hash('sha256', $data_to_hash);
$ctx = hash_init('sha256', HASH_HMAC, 'myapipkey');
hash_update($ctx, $data_hmac);
$result = hash_final($ctx);
echo $result;
````
【问题讨论】:
-
或者这是否回答了您的问题? Encrypt with CryptoJS and decrypt with PHP
-
@NicoHaase 我认为第二个和第三个链接的 QA 是有道理的,但第一个是关于加密/解密的,而不是 OP 真正要求的。
标签: php encryption hash sha256 hmac