md5签名验证

md5签名验证

调用方需要申请 App Key 和 App Secret。
App Key 用来识别调用方身份。
App Secret 用来加密生成签名使用。

签名需要满足以下几点:
可变性:每次的签名必须是不一样的。
时效性:每次请求的时效性,过期作废。
唯一性:每次的签名是唯一的。
完整性:能够对传入数据进行验证,防止篡改。

/api?param_1=xxx&param_2=xxx&ak=xxx&ts=xxx&sn=xxx
ak 表示App Key,用来识别调用方身份。
ts 表示时间戳,用来验证接口的时效性。
sn 表示签名加密串,用来验证数据的完整性,防止数据篡改。sn 是通过 App Secret 和 传递的参数 进行加密的。

签名加密:MD5 组合加密、AES 对称加密、RSA 非对称加密。

md5签名
func MD5(str string) string {
    s := md5.New()
    s.Write([]byte(str))
    return hex.EncodeToString(s.Sum(nil))
}

appKey     = "demo"
appSecret  = "xxx"
encryptStr = "param_1=xxx&param_2=xxx&ak="+appKey+"&ts=xxx"
// 自定义验证规则
sn = MD5(appSecret + encryptStr + appSecret)

验证签名
通过传递参数,再次生成签名,如果将传递的签名与生成的签名进行对比。
相同,表示签名验证成功。
不同,表示签名验证失败。

posted @ 2022-08-07 20:11  delphi中间件  阅读(405)  评论(0编辑  收藏  举报