钉钉签名算法与hash_hmac函数的使用

2 篇文章 0 订阅

1、在php中hash_hmac函数就能将HMAC和一部分哈希加密算法相结合起来实现HMAC-SHA1  HMAC-SHA256 HMAC-MD5等等算法。函数介绍如下:

string hash_hmac(string $algo, string $data, string $key, bool $raw_output = false)

algo:要使用的哈希算法名称,可以是上述提到的md5,sha1等
data:要进行哈希运算的消息,也就是需要加密的明文。
key:使用HMAC生成信息摘要是所使用的密钥。
raw_output:该参数为可选参数,默认为false,如果设为true,则返回原始二进制数据表示的信息摘要,否则返回16进制小写字符串格式表示的信息摘要(注意是16进制数,而非简单的字母加数字)。

另外:如果algo参数指定的不是受支持的算法,将返回false。

2、钉钉签名算法:

先看一下php的实现:

//毫秒
list($msec, $sec) = explode(' ', microtime());
$timestamp = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
		
$app_id = '111111111';
$app_key = '222222222';
$s = hash_hmac('sha256',$timestamp,$app_key,true);
$signature = base64_encode($s);

//http_build_query已经urlencode,所以这里不需要再次urlencode
$result = http_build_query(
    array(
        'signature'=>$signature,
        'timestamp'=>$timestamp,
        'accessKey'=>$app_id
    )
);

得到的result再拼接到指定的url上,然后带上请求包结构体以post方式发起请求。

钉钉服务端会根据timestamp和保存的app_key再算一次signature,对比两个signature的值是否一致。如果一致则请求成功,否则返回错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值