sign 是什么

一、sign 是什么

基础定义

sign 是接口安全签名字符串,安卓 App 专用安全校验机制,由客户端按统一规则加密生成,放在请求头传给后端。

两大核心作用

  1. 防参数篡改:抓包后修改任何请求参数,后端重新计算的签名会不一致,直接拦截请求;
  2. 防重放攻击:依靠时间戳时效限制,旧的抓包请求无法重复调用接口;

和 Token 的区分

表格

字段 核心作用 校验逻辑
Token 身份凭证,判断用户是否登录、权限 校验登录状态、账号身份
sign 请求合法性校验,防篡改、防抓包复用 校验本次请求是否真实、未被修改

二、sign 的完整组成四大部分

第 1 部分:全部业务参数(所有参与请求的业务数据)

包含 3 类参数,统一按参数名ASCII 字典升序 拼接为 key=value 格式,用&连接

  1. Body 参数:POST/PATCH JSON 请求体内所有字段(如 harvestDate、temp、landId)
  2. Query 参数:GET 接口 URL 问号后拼接的参数(如?landId=1里的 landId)
  3. 路径参数:URL 大括号{xxx}占位 ID(如{landCropId}) 示例拼接片段:harvestDate=2026-08-15&landCropId=1

第 2 部分:全局公共请求头固定参数

所有接口必须携带,固定 3 个,拼接在业务参数后:

  1. app-version:App 版本号(例:1.0.0)
  2. device-id:安卓设备唯一标识 Android ID
  3. timestamp:13 位毫秒级时间戳(用于控制请求有效期,后端只允许 ±5 分钟内的请求) 拼接后追加:&app-version=1.0.0&device-id=android_xxx&timestamp=1789000000000

第 3 部分:双方私有密钥 appSecret

客户端、后端提前约定固定密钥,不对外暴露,拼接在字符串最末尾 示例追加:&appSecret=ABC123666secret

第 4 部分:加密算法生成最终 sign

将上面三部分拼接成的完整长字符串,执行:

  1. 执行 SHA256 哈希加密
  2. 全部转为小写字符串 输出结果就是最终要放到请求头的 sign 值

三、完整拼接示例

原始全部参数: 路径参数:landCropId=1 Body 参数:harvestDate=2026-08-15 公共头:app-version=1.0.0、device-id=android_123、timestamp=1789000000000 密钥:appSecret=my_secret_2026

完整待加密串:

plaintext

复制代码
harvestDate=2026-08-15&landCropId=1&app-version=1.0.0&device-id=android_123&timestamp=1789000000000&appSecret=my_secret_2026

对整串 SHA256 小写加密,得到 64 位字符串即为 sign。


四、每一段组成的作用

表格

组成片段 作用
业务全参数 保证任何业务参数被篡改后,签名校验失败
timestamp 时间戳 限制请求有效期,防止别人保存抓包链接重复刷接口
device-id + app-version 限定仅合法安卓客户端可生成有效签名,拦截爬虫、破解包
appSecret 私有密钥 只有前后端持有,第三方无法伪造合法 sign
SHA256 加密 生成唯一不可逆指纹,无法反向推导原始密钥
相关推荐
小码哥_常1 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮3 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
学长毕设4 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
她说可以呀5 小时前
Vue插槽
前端·javascript·vue.js
qq_448011165 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
zzu123zsw5 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
aixingpan5 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352906 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
源码集结号6 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场6 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算