有没有办法在php中创建字符串的HmacSHA256签名?
答案 0 :(得分:67)
答案 1 :(得分:12)
hash_hmac()
功能可以提供帮助,此处:
使用。生成键控哈希值 HMAC方法
例如,以下代码部分:
$hash = hash_hmac('sha256', 'hello, world!', 'mykey');
var_dump($hash);
提供以下输出:
string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)
并且,要获取可以使用的散列算法列表,请参阅hash_algos()
。
答案 2 :(得分:5)
以下是使用 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
答案 3 :(得分:0)
由于缺乏声誉,我无法回答,但是@Melomans方式与ZPiDER的回答相结合只能使用
$hash = hash_hmac('sha256', $string, $secret);
获取正确的Datatrans签名