PHP:如何生成字符串的HmacSHA256签名
有没有办法在php中创建字符串的HmacSHA256签名?函数可能会有所帮助,如下所示: 使用 HMAC法PHP:如何生成字符串的HmacSHA256签名,php,hmac,Php,Hmac,有没有办法在php中创建字符串的HmacSHA256签名?函数可能会有所帮助,如下所示: 使用 HMAC法 例如,代码的以下部分: $hash = hash_hmac('sha256', 'hello, world!', 'mykey'); var_dump($hash); 提供以下输出: string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64) 要获得可使用的哈希算法列表,
例如,代码的以下部分:
$hash = hash_hmac('sha256', 'hello, world!', 'mykey');
var_dump($hash);
提供以下输出:
string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)
要获得可使用的哈希算法列表,请参阅。使用:
其中,
$secret
是您的密钥。这里是一个使用HMAC-SHA-256呼叫PSP之前的数据交易签名(瑞士电子支付解决方案)示例
希望能对一些开发者有所帮助
$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文档:由于声誉不足,我无法回答,但@Melomans way与ZPiDER的回答结合使用,导致仅使用
$hash = hash_hmac('sha256', $string, $secret);
要获得正确的数据转换签名,$string中有什么?@MahaDev您想要签名的任何内容。@SebastianPaaskeTørholm将哈希\u hmac将始终生成唯一的字符串…?@usama No。根据哈希函数的本质,将存在冲突。(即两个散列为相同值的字符串)我建议您研究散列冲突。主题太长,无法在评论中涵盖。感谢@SebastianPaaskeTørholm的回答。请您大致解释一下我们如何使其独特。再次感谢。请注意,结尾的bin2hex将产生与Datatrans后端UI中显示的示例不同的结果!嗨,我想在javascript中生成datatrans登录。但我无法做到这一点。“你有任何关于这方面的工作实例吗?”维尼辛格:没有。但是你可以读一下,也许它会帮助你:
$hash = hash_hmac('sha256', $string, $secret);