php 如何生成字符串的HmacSHA256签名

lstz6jyr  于 2023-04-19  发布在  PHP
关注(0)|答案(6)|浏览(194)

有没有办法在php中创建字符串的HmacSHA256签名?

njthzxwz

njthzxwz1#

使用hash_hmac

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

其中$secret是您的密钥。

v9tzhpje

v9tzhpje2#

hash_hmac()函数可能会有所帮助,如下所示:
使用HMAC方法生成带密钥的哈希值
例如,以下代码部分:

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

给出以下输出:

string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)

要获取可以使用的哈希算法列表,请参阅hash_algos()

bvjxkvbb

bvjxkvbb3#

以下是使用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));
mfpqipee

mfpqipee4#

这是方法。如何在laravel中生成hash_hmac。它将100%工作。

$sig = hash_hmac('sha256', $request->getContent(), 'secret value' );
kzipqqlq

kzipqqlq5#

我不能回答,由于缺乏声誉,但@Melomans的方式结合ZPiDER的答案导致只使用

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

正确的Datatrans签名

kd3sttzy

kd3sttzy6#

好的,使用hash_hmach对数据进行签名,您需要做的就是执行以下操作
1.获取您的密钥
1.选择密码模式或方法示例sha1、sha256等
1.创建一个变量来保存你的加密数据,你可以随意调用它。因此,代码如下所示

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

相关问题