我正在使用 php 8.0.11,我必須生成一個 SHA256 加密的訊息簽名。當我在郵遞員中使用預請求腳本中的 javascipt 代碼測驗 API 時,它提供了正確的加密訊息簽名,我在測驗時將腳本轉換為 php在 php 中,它發送一個不同的錯誤加密訊息簽名(密鑰和 msg 是假的):
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;
````
uj5u.com熱心網友回復:
對 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'。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/352657.html
下一篇:找不到分隔符號資料丟失
