1. 文档
OPEN_API接口文档
  • 文档
    • 接口文档
    • 云函数最佳使用
    • CLI使用教程
    • 普通请求
    • 加密请求
    • 接口管理-接口拓展
    • 自定义验签算法
    • TCP_CLIENT链接
    • DH密钥交换
    • 常见问题
      • 通用解答
      • 功能答疑
  • 单码接口
    • 单码以卡充卡
      GET
    • 获取单码信息接口
      GET
    • 单码登出
      GET
    • 单码心跳接口
      GET
    • 单码登录
      GET
    • 单码解绑
      GET
  • 会员接口
    • 用户登录
      GET
    • 获取会员信息(已登录)
      GET
    • 用户注册
      GET
    • 用户登出
      GET
    • 用户心跳
      GET
    • 获取会员信息(未登录)
      GET
    • 用户解绑
      GET
    • 用户充值
      GET
    • 修改密码(已登录)
      GET
    • 修改密码(未登录)
      GET
    • 修改昵称
      GET
    • 查询工单类型
      GET
    • 添加新的反馈主题
      GET
    • 获取已登录用户的所有反馈主题
      GET
    • 获取反馈主题下的聊天记录
      GET
    • 发送聊天消息
      GET
  • 通用接口
    • 获取程序变量
    • 获取程序版本列表
    • 获取最新版本
    • 云函数
    • 设置私有数据
    • 获取私有数据
    • 获取应用免费状态
    • 云函数 Copy
  1. 文档

自定义验签算法

在进行自定义验签算法之前,您应该已经理解系统
1、签名算法一(直接拼接时间戳+APP_KEY)
2、签名算法二(拼接所有的参数,字典排序法+APP_KEY)
现在我们将向您介绍系统的自定义验签算法流程

目的#

自定义验签算法的目的是保持每个客户都有一套属于自己的唯一的签名算法规则,不必再遵循字典排序法或直接拼接,可以由客户自定义算法顺序/常量,从而保证签名的唯一性。
我们通过自定义参数顺序/常量控制来控制签名顺序和规则。

案例一(单参)#

例如 单码登录接口,需要参数card=我是单码 mac=我是机器码 timestamp=我是时间戳 safeCode=我是随机数
若按照传统的字典排序法您应该计算的是
card=我是单码&mac=我是机器码&safeCode=我是随机数&timestamp=我是时间戳APP_KEY
然后将其计算得出签名 signature

但是现在您可以自定义顺序和规则
例如此处我们在后台定义
&timestamp= &mac= &safeCode &card=
此时您应该要计算的签名就应该是
timestamp=我是时间戳&mac=我是机器码&safeCode=我是随机数&card=我是单码APP_KEY
然后将其计算后得出签名 signature
注意:所有的系统内部参数,必须用&参数名=来标识
例如&card= &mac= &versionId=等
如果不以 & 开头 且不以 =结尾
则此配置项默认作为常量参数使用
何为常量参数?请看案例二

案例二(参+常量)#

仅仅是案例一,破解者可使用穷举法,将所有的参数按照顺序穷举从而得出正确的算法
为了防止算法规则被穷举出,我们可以将参数混合常量使用
常量参数不以 & 开头和 =结尾即可标识
我们仍然使用单码登录接口举例
他的参数为:card=我是单码 mac=我是机器码 timestamp=我是时间戳 safeCode=我是随机数
我们可以在后台定义验签规则为
&timestamp= AAA &mac= BBB &safeCode ccc &card= ddd
此时您应该要计算的签名就应该是:
timestamp=我是时间戳AAA&mac=我是机器码BBB&safeCode=我是随机数ccc&card=我是单码dddAPP_KEY
如此操作,即可在您的字串中添加您的自定义的标识,如此一来,即使您的参数被无限穷举,只要破解者不知道您的自定义标识,那么这个验签就是一个黑盒的过程。
修改于 2026-01-17 05:51:58
上一页
接口管理-接口拓展
下一页
TCP_CLIENT链接
Built with