[英]PHP: How can I generate a HmacSHA256 signature of a string
有沒有辦法在php中創建一個字符串的HmacSHA256簽名?
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 對您的數據進行簽名,您只需要執行以下操作
$signData= hash_hmac("sha256",$dataToBeSigned,$yourSecretKey);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.