加密与签名

API端点

GET/api/v1/client/enc?app_key={应用密钥}&data={加密数据}

请求流程

  1. 组装参数(含 action、timestamp、nonce)
  2. 按参数名ASCII升序排列,拼接为 key=value&key2=value2 格式
  3. 使用 app_secret 计算 HMAC-SHA256 签名,加入 sign 参数
  4. 使用 transfer_key 对整个字符串进行 RC4 加密
  5. 加密结果转HEX,作为 data 参数发送

签名算法示例

// 原始参数(按key排序)
action=init&machine_code=ABC123&nonce=xyz789×tamp=1700000000

// 使用 app_secret 计算 HMAC-SHA256
sign = HMAC-SHA256(上述字符串, app_secret)

// 加入签名后
action=init&machine_code=ABC123&nonce=xyz789&sign=xxx×tamp=1700000000

// 使用 transfer_key 进行 RC4 加密,转HEX
data = HEX(RC4(上述字符串, transfer_key))

响应解密

根据软件配置的"返回数据加密"设置:

客户端可通过判断响应是否以 { 开头来区分两种模式。

响应格式(扁平结构)

{
    "code": 2,           // 状态码,见错误码表
    "msg": "登录成功",    // 状态消息
    "timestamp": 1700000000,  // 服务器时间戳
    "token": "xxx",      // 登录令牌(登录成功时)
    ...                  // 其他字段(直接在顶层,无嵌套data对象)
}
所有响应字段均在顶层,无嵌套的data对象。timestamp 与服务器时间差不超过 ±60秒,nonce 在65秒内不可重复。