钉钉扫码登录中的签名算法在python中的实现

签名算法为HmacSHA256,签名数据是当前时间戳timestamp,密钥是appId对应的appSecret计算出来的签名值,算出来的digest再经过base64加密后即是所需要的签名数据。官方文档中只给了Java和PHP的示例demo,因此,根据Java和PHP的demo写一个python版的。

 1 import hmac
 2 from base64 import standard_b64encode
 3 
 4 
 5 def get_ding_talk_signature(app_secret, utc_timestamp):
 6     """
 7     :param app_secret: 钉钉开发者文档创建的app密钥
 8     :param utc_timestamp: 官方文档中要签名的数据,单位是毫秒时间戳
 9     :return: 为所需要的签名值,此值为可逆的
10     """
11     digest = hmac.HMAC(key=app_secret.encode('utf8'),
msg=utc_timestamp.encode('utf8'),
digestmod=hmac._hashlib.sha256).digest() 14 signature = standard_b64encode(digest).decode('utf8') 15 return signature

以下是钉钉官方的签名计算文档链接

https://ding-doc.dingtalk.com/doc#/faquestions/hxs5v9

猜你喜欢

转载自www.cnblogs.com/zepc007/p/12154253.html