PHP hash_hmac与Python hmac

本文介绍如何为钉钉群自定义机器人ding-bot增加签名支持,使用PHP实现HMAC-SHA256签名机制,确保API调用的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天为俺开发钉钉群自定义机器人ding-bot(PHP)增加签名支持,参考官方文档钉钉开发文档

签名机制如下:

#python 3.8 
import time
import hmac
import hashlib
import base64
import urllib.parse

timestamp = str(round(time.time() * 1000))
secret = 'this is secret'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
print(timestamp)
print(sign)

示例加密代码是python hmac

hmac.new(key, msg=None, digestmod=None)

与之对应的是php hash_hmac

hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )
  • $algo 哈希算法名称,例如:"md5","sha256","sha1" 等。 如何获取受支持的算法清单,请参见 hash_algos()
  • $data 要进行哈希运行的消息
  • $key 使用的密钥
  • $raw_output 设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串

因此PHP实现以上签名如下:

$timestamp = time()*1000;
$secret = 'this is secret';
$stringToSign = $timestamp."\n".$secret;
$hmacCode = hash_hmac('sha256',$stringToSign,$secret,true);
$sign = urlencode(base64_encode($hmacCode));
var_dump($timestamp);
var_dump($sign);

 欢迎大家关注我的钉钉机器人ding-bot https://github.com/hbh112233abc/ding-bot 支持ThinkPHP6的日志通道哦:)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值