在 php 中使用 SHA256 hmac 生成散列消息(密钥和消息是假的)
Generate a hashed message with SHA256 hmac in php (key & msg are fake)
我正在使用 php 8.0.11,我必须生成一个 SHA256 加密 messagesignature.When 我在 postman 中测试 API 在它给出的预请求脚本中使用 javascipt 代码正确的加密消息签名,当我在 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;
````
对 PHP 代码的简单更改应该会给出正确的结果。
您似乎进行了两次哈希运算(或类似的运算!)
$data_to_hash = "mymessage";
$ctx = hash_init('sha256', HASH_HMAC, 'myapipkey');
hash_update($ctx, $data_to_hash);
$result = hash_final($ctx);
echo $result;
无论如何,以上代码的输出将是:
898786a1fa80da9b463c1c7c9045377451c40cf3684cbba73bdfee48cd3a5b8f
这与 JavaScript 代码相同,都匹配此处给出的输出:
https://codebeautify.org/hmac-generator
算法 = 'SHA256',密钥 = 'myapipkey',明文 = 'mymessage'。
我正在使用 php 8.0.11,我必须生成一个 SHA256 加密 messagesignature.When 我在 postman 中测试 API 在它给出的预请求脚本中使用 javascipt 代码正确的加密消息签名,当我在 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;
````
对 PHP 代码的简单更改应该会给出正确的结果。
您似乎进行了两次哈希运算(或类似的运算!)
$data_to_hash = "mymessage";
$ctx = hash_init('sha256', HASH_HMAC, 'myapipkey');
hash_update($ctx, $data_to_hash);
$result = hash_final($ctx);
echo $result;
无论如何,以上代码的输出将是:
898786a1fa80da9b463c1c7c9045377451c40cf3684cbba73bdfee48cd3a5b8f
这与 JavaScript 代码相同,都匹配此处给出的输出:
https://codebeautify.org/hmac-generator
算法 = 'SHA256',密钥 = 'myapipkey',明文 = 'mymessage'。