php和c#的 HmacSHA1 加密方法

阅读数: 1228 2020年05月30日

接入C#接口的时候,使用了 HmacSHA1 + base64 加密,在网上搜索的方法发现PHP和C#有差异,经过仔细研究找到问题,特此记录。


一、PHP 的 HmacSHA1 加密方法:

$hmac = hash_hmac("sha1", $str, $privateKey, true); //获得是二进制 = C# byte[]


二、base64 加密:

注意看 C# 的base64 里面传入的是二进制还是字符串

1、情况1:字符串进行base64加密

//C# 里面传入的是字符串
Convert.ToBase64String(Encoding.UTF8.GetBytes(AStr));

//PHP 获得的 HmacSHA1 必须也是字符串
$hmac = bin2hex($hmac); //二进制转换成字符串
base64_encode($hmac);

2、情况2:二进制 base64 加密

 //C# 对 byte[] 进行加密
 Convert.ToBase64String(byte[]);
 
 //PHP 也需要对二进制进行加密
 base64_encode($hmac); //无需经过 bin2hex() 处理


phpriji.cn | 网站地图 | 沪ICP备17015433号-1