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

Oudasheng 2020-01-06

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

import hmac
from base64 import standard_b64encode


def get_ding_talk_signature(app_secret, utc_timestamp):
    """
    :param app_secret: 钉钉开发者文档创建的app密钥
    :param utc_timestamp: 官方文档中要签名的数据,单位是毫秒时间戳
    :return: 为所需要的签名值,此值为可逆的
    """
    digest = hmac.HMAC(key=app_secret.encode(‘utf8‘),msg=utc_timestamp.encode(‘utf8‘),                          digestmod=hmac._hashlib.sha256).digest()
    signature = standard_b64encode(digest).decode(‘utf8‘)
    return signature

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

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

相关推荐