参数签名(appKey、appSecret、sign)

为什么要参数签名

  • 保证接口的数据不会被篡改和重复调用

原理

  • 调用端对参数进行加密,服务端也对参数后加密后与调用端加密结果对比
  • 加密算法:两端约定好加密算法,加密算法需加盐,通过参数排序、拼接秘钥、MD5等方式进行加密
  • 秘钥对:服务端对每个调用端生成appKey和appSecret,appSecret为隐秘信息,调用端本地存储。

调用端

  • 预先获取:appKey、appSecret
  • 调用:
    传参appKey、timestamp(毫秒时间戳,5秒过期, 防止dos攻击)、业务参数、签名
    签名算法
    1. 对参数按照ASCII码表进行排序,得到结果:num: 10, nickName: 小泡芙, username:张三
    2. 拼接排序后的字段进行拼接,得到结果:s1 = num10nickName小泡芙username张三
    3. 在拼接好的字符串后加上appSecret,得到结果:s2 = secret + s1 + secret
    4. 最后使用md5算法:md5(s2)
    请求参数示例, 注意:没有传appSecret
{
            "nickName": "小泡芙",
            "username": "张三",
            "num": 10,
            "appKey": "App-3782917398173123-32223",
            "timestamp": "2022-10-14 15:53:23",
            "sign": "ajhkd123dh8902381273823"
        }
  • 流程图


    image.png

接收端

  • 接收参数:
  • 验签:
    1. 校验时间戳(防止抓取数据后恶意高频访问),判断时间戳是否过期
    2. 校验appSecret:获取appSecret,判断是否过期
    3. 校验签名:走签名算法生成签名(需要把签名先从参数表移出来),与接收签名对比。
  • 流程图:


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容