最近,在PHP项目中使用到了hmac_sha256加密方式。于是,研究了下sha256和hmac_sha256的加密方式,将使用方法记录下来,为其他同学提供参考。
$params = array(
'title' => '测试标题',
'content' => '测试内容',
'original' => 1,
'subTitle' => '测试副标题',
'reward' => 1,
'originalUrl' => '',
'date' => 1591264724237,
'redirect' => true,
'coverUrls' => array('aaa','bbb'),
'tag' => array('djdksld','sdfjllsdkfjsa'),
$content1 = json_encode($params, JSON_UNESCAPED_UNICODE);
echo "sha256 result= " . strtoupper(hash("sha256", $content1));
echo "\n";
$hash = hash_hmac('sha256', $content1, 'mykey');
echo "hash hmac sha256 result= " . $hash;
计算结果如下所示:
sha256 result= 5BDC1244FA29B6EBE31E0756F6BD169F1DE5F8BCA2F0BD016A3043EF3FDBF76B
hash hmac sha256 result= 89aa21e2237ed2e0c2d672f8bbcc4b920b582167a4ed571c32e34bee7241d83e
最近,在PHP项目中使用到了hmac_sha256加密方式。于是,研究了下sha256和hmac_sha256的加密方式,将使用方法记录下来,为其他同学提供参考。<?php$params = array( 'title' => '测试标题', 'content' => '测试内容', 'original' => 1, 'subTitle' => '测试副标题',
使用
hmac
-
sha256
加密,然后对其返回的原始二进制数据进行base64编码。
上述示例的计算结果为: yLgHjb8GckRpZ2uW8kb0qipODRkaFCIBNQsnZ2vhGMo=
Java 代码示例:
String secre...
在开发微信支付的时候有时候会用到签名的同步是否和微信方一致,来验证有效性,微信目前签名方式大致有两种,如下:
MD5版本实现思路
使用ksort()函数对参数数组按照数组键名进行升序排序
使用array_filter()函数过滤掉不符合签名条件的数组值
使用http_build_query()函数将数组键名与键值组合成URL字符串
对字符串进行MD5编码
最后使用strtoupper()函数将字符串转换为大写即可
* Create the wechat pay sign with MD
你想要了解
PHP
中的
HMAC
-
SHA256
是吗?
HMAC
-
SHA256
是一种密码散列函数,它使用 SHA-256 哈希算法和一个密钥来计算消息的哈希值。在
PHP
中,可以使用 hash_
hmac
函数来计算
HMAC
-
SHA256
哈希值。下面是一个例子:
```
php
$message = "Hello, world!";
$key = "secret_key";
$hash = hash_
hmac
('
sha256
', $message, $key);
echo $hash;
在这个例子中,我们使用 hash_
hmac
函数计算了 "Hello, world!" 消息的
HMAC
-
SHA256
哈希值,密钥为 "secret_key"。