You need to enable JavaScript to run this app. 安卓开发:如何将API签名加密逻辑适配到RequestParams请求场景
优惠活动
大模型
产品
解决方案
定价
更多

安卓开发:如何将API签名加密逻辑适配到RequestParams请求场景

适配方案

你可以按照以下步骤直接将加密逻辑适配到RequestParams场景:

核心逻辑说明

原加密方案的核心流程是:

  • 实例化API类自动生成随机salt、对应sign校验值、当前应用包名
  • 把校验字段和业务参数合并为完整JSON
  • 整体做Base64编码后传递给后端,后端解码后先校验sign合法性再解析业务参数

适配代码示例

首先确保你的项目已经引入Gson依赖(用于JSON序列化),没有的话在模块级build.gradle的dependencies中添加:

implementation 'com.google.code.gson:gson:2.10.1'

然后修改你的请求代码如下:

// 1. 实例化API类,传入当前Activity/Context生成校验参数
API api = new API(YourCurrentActivity.this);
// 2. 转成JsonObject用于追加业务参数
JsonObject paramJson = (JsonObject) new Gson().toJsonTree(api);
// 3. 添加你的业务请求参数
paramJson.addProperty("mobile", mobile_number);
paramJson.addProperty("password", password);
// 4. 整体JSON转Base64编码
String encodedParam = API.toBase64(paramJson.toString());
// 5. 构造RequestParams,参数名请和后端约定的接收字段保持一致,示例中为data
RequestParams requestParams = new RequestParams();
requestParams.put("data", encodedParam);
// 6. 发起请求
AsyncHttpClient client = new AsyncHttpClient();
client.get(BASE_URL + "login.php", requestParams, new AsyncHttpResponseHandler() {
    // 原有回调逻辑保持不变即可
    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
        // 处理成功响应
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        // 处理失败响应
    }
});

注意&优化建议

  • 目前API类中的apiKey硬编码在Java代码中,很容易被反编译提取,建议后续把密钥存储到NDK原生库,或者做字符串混淆提升破解成本。
  • MD5是摘要算法仅用于防篡改,不能加密数据,敏感参数比如密码建议额外加一层AES对称加密再放入JSON。
  • 当前随机salt仅为0-899的整数,范围太小容易被暴力碰撞生成合法sign,建议改成16位以上的随机字符串提升安全性。
  • 如果用GET请求传递Base64参数,+、/、=等特殊字符可能被URL转义导致后端解码失败,建议改成POST请求,或者把Base64编码的flag改为Base64.URL_SAFE | Base64.NO_WRAP,同时后端同步调整解码规则。

内容的提问来源于stack exchange,提问作者Nidhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 02:54:03