簡體   English   中英

PHP:如何生成字符串的 HmacSHA256 簽名

[英]PHP: How can I generate a HmacSHA256 signature of a string

有沒有辦法在php中創建一個字符串的HmacSHA256簽名?

使用hash_hmac

$sig = hash_hmac('sha256', $string, $secret)

$secret是你的鑰匙。

hash_hmac()函數可以在這里提供幫助:

使用 HMAC 方法生成鍵控哈希值


例如,以下代碼部分:

$hash = hash_hmac('sha256', 'hello, world!', 'mykey');
var_dump($hash);

給出以下輸出:

string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)


而且,要獲取可以使用的散列算法列表,請參閱hash_algos()

這是在使用HMAC-SHA-256調用 PSP 之前的datatrans 交易簽名示例(瑞士電子支付解決方案)。

希望它可以幫助一些開發人員。

$hmacKey    = 30911337928580013;

$merchantId = 1100004624;
$amount     = $total * 100;
$currency   = 'EUR';
$refno      = $orderId;

// HMAC Hex to byte
$secret     = hex2bin("$hmacKey");

// Concat infos
$string     = $merchantId . $amount. $currency . $refno;

// generate SIGN
$sign       = bin2hex(hash_hmac('sha256', $string, $secret)); 

注意:商家 ID 和 HMAC 密鑰均來自此處提供的 Datatrans 文檔: https ://admin.sandbox.datatrans.com/showcase/doc/Technical_Implementation_Guide.pdf

由於缺乏聲譽,我無法回答,但@Melomans 方式與 ZPiDER 的回答相結合導致僅使用

$hash       = hash_hmac('sha256', $string, $secret);

正確的 Datatrans 簽名

可以使用 hash_hmach 對您的數據進行簽名,您只需要執行以下操作

  1. 獲取你的秘鑰
  2. 選擇密碼模式或方法示例 sha1、sha256 等
  3. 創建一個變量來保存您的加密數據,您可以隨意調用它因此代碼將如下所示

 $signData= hash_hmac("sha256",$dataToBeSigned,$yourSecretKey);

暫無
暫無

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

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