🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 计算签名 在计算签名之前,从 [清博大数据开放平台应用管理中创建应用](http://open.gsdata.cn/user)派生出签名密钥。由于派生签名密钥特定于日期、接口和APP,因此它提供了更高程度的保护。秘密访问密钥不只用于对请求进行签名。然后将签名密钥和您在[创建待签字符串](create-string-to-sign.md)中[创建的待签字符串](create-string-to-sign.md)用作加密哈希函数的输入。加密哈希函数生成的十六进制编码结果就是签名。 签名需要您使用特定UTF-8字符编码来对待签字符串进行编码。 **计算签名** 1. 派生您的签名密钥。为此,请使用您的秘密访问密钥创建一系列基于哈希的消息身份验证代码 (HMAC)。此代码显示在以下伪代码中,其中 HMAC(key, data) 表示以二进制格式返回输出的 HMAC-SHA256 函数。每个哈希函数的结果将成为下一个函数的输入。 用于派生签名密钥的伪代码 ~~~ kSecret = your secret access key kDate = HMAC("GSDATA" + kSecret, Date) kService = HMAC(kDate, Service) kSigning = HMAC(kService, "gsdata_request") ~~~ 请注意,哈希过程中所使用的日期的格式为 YYYYMMDD(例如,20170620),不包括时间。 确保以正确的顺序为您要使用的编程语言指定 HMAC 参数。在此示例中,密钥是第一个参数,数据 (消息) 是第二个参数,但您使用的函数可能以不同顺序指定密钥和数据。 使用摘要 (二进制格式) 来派生密钥。大多数语言都有用来计算二进制格式哈希(通常称为摘要)或十六进制编码哈希(称为十六进制摘要)的函数。派生密钥需要使用二进制格式摘要。 有关如何在不同编程语言中派生签名密钥的更多信息,请参阅说明如何为 Signature 派生签名密钥的示例。 2. 计算签名。要计算签名,请使用派生的签名密钥和待签字符串作为加密哈希函数的输入。在计算签名后,将二进制值转换为十六进制表示形式。 以下伪代码说明如何计算签名。 ~~~ signature = HexEncode(HMAC(derived signing key, string to sign)) ~~~