2.4.2 HMAC-SHA256的sign签名算法示例:
- 1.按参数名的字母顺序对参数的值进行顺序排序,signature不参与拼接。之后把参数值进行拼接得到字符串finalString。
- 2.使用HMAC-SHA256算法哈希上步连接的字符串,散列上协商好的secret密钥。得到加密后的字符串。
- 3.比对参数signature的值是否与上步字符串匹配。
- 4.https://tool.oschina.net/encrypt?type=2 可通过此链接提供的util进行测试。
- 5.请看以下示例:
请求参数:
{
"uid":"1343444245255643138",
"roleId":"1001200100001",
"serverId":"0001",
"giftCode":"100120giftcode",
"cdkCode":"eLxksa5m2GP24nH95JSs3",
"checkFlag":"0",
"sandbox":"1",
"signature":"b6befd6b3a3cfaf4aed1034ec13fad4d9c948dddcf5fb2868a06abe65a9faf54"
}
流程
1.参数排序并拼接:
"cdkCode":"eLxksa5m2GP24nH95JSs3", "checkFlag":"0", "giftCode":"100120giftcode", "roleId":"1001200100001", "sandbox":"1", "serverId":"0001", "uid":"1343444245255643138",
- 拼接后的字符串:
- eLxksa5m2GP24nH95JSs30100120giftcode10012000100001100011343444245255643138
eLxksa5m2GP24nH95JSs30100120giftcode1001200100001100011343444245255643138
3.将finalString进行HMAC-SHA256算法哈希:
b6befd6b3a3cfaf4aed1034ec13fad4d9c948dddcf5fb2868a06abe65a9faf54
备注
- 参数中,"signture"不参与finalString生成。
- 某些参数的值有可能为null,此时仍然参与finalString生成,但以null为替代。