如何生成字符串的 HmacSHA256 签名

发布于 2024-08-30 00:59:54 字数 40 浏览 7 评论 0原文

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

Is there any way to create a HmacSHA256 signature of a string in php?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

巷子口的你 2024-09-06 00:59:54

使用 hash_hmac

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

其中 < code>$secret 是你的密钥。

Use hash_hmac:

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

Where $secret is your key.

九局 2024-09-06 00:59:54

hash_hmac()< /a> 函数可以提供帮助,在这里:

使用以下方法生成一个键控哈希值
HMAC方法

例如,以下代码部分:

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

给出以下输出:

string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)

并且,要获取可以使用的哈希算法列表,请参阅 <代码>hash_algos()

The hash_hmac() function could help, here :

Generate a keyed hash value using the
HMAC method

For example, the following portion of code :

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

Gives the following output :

string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)

And, to get the list of hashing algorithms that can be used, see hash_algos().

む无字情书 2024-09-06 00:59:54

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

Here is an example of datatrans transaction signing (swiss e-payment solution) before call PSP with HMAC-SHA-256.

Hope it could help some developers.

$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)); 

Note: the merchant ID and HMAC key are both from Datatrans documentation available here : https://admin.sandbox.datatrans.com/showcase/doc/Technical_Implementation_Guide.pdf

小…楫夜泊 2024-09-06 00:59:54

就是这样。如何在 laravel 中生成 hash_hmac。它将发挥 100% 的作用。

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

This is the way. How to generate hash_hmac in laravel. It'll work 100%.

$sig = hash_hmac('sha256', $request->getContent(), 'secret value' );
段念尘 2024-09-06 00:59:54

由于缺乏声誉,我无法回答,但 @Melomans 的方式与 ZPiDER 的答案相结合导致仅用于

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

正确的 Datatrans 签名

I can't answer due to lack of reputation, but @Melomans way in combination with ZPiDER's answer leads to using only

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

for a correct Datatrans signing

故人的歌 2024-09-06 00:59:54

可以使用 hash_hmach 签署您的数据
您所需要做的就是执行以下操作

  1. 获取您的密钥
  2. 选择密码模式或方法示例 sha1、sha256 等
  3. 创建一个用于保存加密数据的变量,无论您喜欢什么名称都可以
    因此代码将如下所示
$signData= hash_hmac("sha256",$dataToBeSigned,$yourSecretKey);

okay to sign your data with hash_hmach
all you need is to do the following

  1. get your secret key
  2. choose a cipher mode or method example sha1,sha256, etc
  3. create a variable that will hold your encrypted data call it whatever you like
    Therefore the code will look like this

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文