簡體   English   中英

如何使用Base64編碼執行HMAC-SHA1?

[英]How to perform HMAC-SHA1 with Base64 Encode?

我正在嘗試設置一個應用程序以使用我的URL簽名,以便它們可以進行身份​​驗證,但是我似乎無法從以下頁面上找出如何復制我嘗試的代碼: https : //help.sendowl.com /幫助/簽訂的URL#示例

order_id=12345&buyer_name=Test+Man&buyer_email=test%40test.com&product_id=123&signature=QpIEZjEmEMZV%2FHYtinoOj5bqAFw%3D

buyer_email=test@test.com&buyer_name=Test Man&order_id=12345&product_id=123

buyer_email=test@test.com&buyer_name=Test Man&order_id=12345&product_id=123&secret=t0ps3cr3t

publicStr&t0ps3cr3t

步驟如下:

  1. 首先對參數排序(刪除簽名)並取消轉義:
  2. 接下來,添加您的簽名秘密:
  3. 生成用於簽名的密鑰:
  4. 使用Base 64編碼執行HMAC-SHA1摘要: QpIEZjEmEMZV / HYtinoOj5bqAFw =

以下是我嘗試過的結果,但最終沒有得到相同的結果:

$signKey = "t0ps3cr3t";
$signData = "buyer_email=test@test.com&buyer_name=Test Man&order_id=12345&product_id=123&secret=t0ps3cr3t";

$passData = hash_hmac("sha1", $signData, base64_decode(strtr($signKey)), true);
$passData = base64_encode($passData);

echo $passData;

我不斷收到x8NXmAmkNBPYCXwtj65mdVJ8lPc=

我能夠復制以下內容:花了一點時間弄清楚這么簡單的東西..已經連續11個小時編碼了。

謝謝。

$data = "buyer_email=test@test.com&buyer_name=Test Man&order_id=12345&product_id=123&secret=t0ps3cr3t";
$key = "publicStr&t0ps3cr3t";

$pass1 = hash_hmac('sha1', $data, $key, true);
$pass = base64_encode($pass1);

echo $pass;

$pass will return "QpIEZjEmEMZV/HYtinoOj5bqAFw=", the correct value.
$current_timestamp = Carbon::now()->timestamp;
    $signstring = "z001-line-anime-gif." . $current_timestamp . ".aaaabbbbccccdddd";
    $secret = 'STG-7f*(:hsM-1_eQ_ZD175QgEoJhI$:oR.zEQ<z';

    $sig = hash_hmac('sha1', $signstring, $secret);

    $signature = hex2bin($sig);

    $signature = base64_encode($signature);
    return $signature;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM