当前位置: 首页 > news >正文

保险公司招聘网站保定网络营销网站

保险公司招聘网站,保定网络营销网站,cpanel面板 WordPress,国外开网站怎样做平帐前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值…前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值做了RSA AES加密 需求大概是这样 下面看下代码实现逻辑 实现 在网络框架的配置类里添加加密拦截器 HttpsUtils.SSLParams sslParams HttpsUtils.getSslSocketFactory();OkHttpClient.Builder mOkHttpBuilder new OkHttpClient.Builder().connectTimeout(CONN_TIME_OUT, TimeUnit.SECONDS).readTimeout(READ_TIME_OUT, TimeUnit.SECONDS).writeTimeout(WRITE_TIME_OUT, TimeUnit.SECONDS).sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager).addInterceptor(new EncryptionInterceptor()) //加密拦截器 统一处理解析 我的业务场景是 前期的 登陆 发验证码 认证 接口不需要做加密 所以我需要在加密拦截器前期做单独处理 //认证接口不处理加密需求if (url.encodedPath().equals(xxx/auth)) {return chain.proceed(request);}//登陆和验证码都是get接口所以在这里统一拦截 if (method.equals(get) || method.equals(delete)) {return chain.proceed(request);}处理完特殊业务场景 就剩统一的post接口 参数统一封装成body //请求接口请求参数String param InterceptorUtils.bodyToString(request);//获取加密的keyString aesKey Hawk.get(AppCode.AES_EKY);String encryptData AESUtils.encrypt(param, aesKey);//拿到加密后的json字符串String json new Gson().toJson(new JsonRequest(encryptData));RequestBody body RequestBody.create(request.body().contentType(), json);request request.newBuilder().post(body).build();Response response chain.proceed(request);下图是加密后的参入 统一用data作为加密key-value的key用于后端解析 再来看一下返回值解密的代码实现 这里有2个点需要注意一下 对于后端返回的类型 无非是对象Object或者数组Array 2种情况 统一封装 先来看一下返回的加密格式 {code:20000,data:N1bBAjZ4m6PGGWJmu53PzSOcyjjUL0Jo3UITcEgmxYWcnBZSXKXRK81bS65JVoB8ouAuBLSSQvzVxHAc/pRbdUentgpppoe8wfhKvLuVu9LhVPK9y6I9/rf5nNm4h0R62ubdUNINLsi6tlj/Gn/gMPAzIoEFtVyQMQvHJ1sH4uh4as0Tnxu51aEknNc8Pm,errorId:,message:操作成功}上图中data是我们的业务返回数据 它可能是Array也可能是Object encryptData 加密字符串 //说明是数组if (encryptData ! null encryptData.startsWith([)) {JSONArray jsonArray JSONArray.parseArray(encryptData);decryptObj.setData(jsonArray);} else if (encryptData ! null encryptData.startsWith({)) {//说明是对象JSONObject jsonObject JSONObject.parseObject(encryptData);decryptObj.setData(jsonObject);}EncryptionInterceptor 实现 public class EncryptionInterceptor implements Interceptor {Overridepublic Response intercept(Chain chain) throws IOException {Request request chain.request();okhttp3.HttpUrl url request.url();String method request.method().toLowerCase().trim();//认证接口不处理加密需求if (url.encodedPath().equals(/isp/app/worker/auth)) {return chain.proceed(request);}if (method.equals(get) || method.equals(delete)) {return chain.proceed(request);}//请求接口请求参数String param InterceptorUtils.bodyToString(request);//获取加密的keyString aesKey Hawk.get(AppCode.AES_EKY);String encryptData AESUtils.encrypt(param, aesKey);//拿到加密后的json字符串String json new Gson().toJson(new JsonRequest(encryptData));RequestBody body RequestBody.create(request.body().contentType(), json);request request.newBuilder().post(body).build();Response response chain.proceed(request);return Decrypt(response);}/*** 返回值解密* param response 返回值* return response*/private Response Decrypt(Response response) {try {Response.Builder builder response.newBuilder();Response clone builder.build();//成功 判断是否等于200if (clone.code() ! 200) {return response;}ResponseBody body clone.body();if (body ! null) {MediaType mediaType body.contentType();if (mediaType ! null) {if (InterceptorUtils.isText(mediaType)) {String aesKey Hawk.get(AppCode.AES_EKY);BaseResult result new Gson().fromJson(body.string(),BaseResult.class);String encryptData AESUtils.decrypt(result.getData().toString(), aesKey);ALog.e(解密返回数据 - encryptData);BaseResult decryptObj new BaseResult();decryptObj.setCode(result.getCode());decryptObj.setErrorId(result.getErrorId());decryptObj.setMessage(result.getMessage());//说明是数组if (encryptData ! null encryptData.startsWith([)) {JSONArray jsonArray JSONArray.parseArray(encryptData);decryptObj.setData(jsonArray);} else if (encryptData ! null encryptData.startsWith({)) {//说明是对象JSONObject jsonObject JSONObject.parseObject(encryptData);decryptObj.setData(jsonObject);}String strJson new Gson().toJson(decryptObj);body ResponseBody.create(mediaType, strJson);return response.newBuilder().body(body).build();}}}} catch (Exception e) {ALog.e(解密错误: e.getMessage());}return response;} }有什么问题欢迎交流~
http://www.yingshimen.cn/news/47860/

相关文章:

  • 12306网站谁做的学做网站是什么专业
  • 网站点击率高深圳高端商场排名
  • 向客户介绍网站建设的话本html代码入门
  • 好123设为主页官网优化网站公司
  • 网站空间价格专业企业网站制作怎么做
  • 三星单片机开发网站wordpress添加附件下载
  • 星裕建设网站做二手网站有哪些问题
  • 做网站要几天大连网站建设找哪家好
  • 买布自己做网站衣服的wordpress主题模版开发
  • 韩国做 mp4下载网站wordpress 父页面
  • 辽宁建设工程信息网老网站php 整个网站变量
  • 南昌网站定制公司哪家好站酷设计网站官网未上色文件
  • 百度做网站多怎样学网络推广
  • 宁夏网站建设哪家好还原wordpress站点地址恢复
  • 可以自学做网站吗做网站如何设计数据库
  • 团购网站做不起来郑州网站制作汉狮网络
  • 网站维护要多久建站模板怎么选
  • 企业网站属于哪种网站类型公司备案号在哪里查询
  • 上海移动端网站建设搞外贸一般是干什么的
  • 棋牌游戏网站怎么做男人做想看的免费网站
  • 分销网站开发广告设计合同模板
  • 网站上线之前怎么做推广苏州高端网站设计企业
  • 品牌网站建设预定大蝌蚪医院网站建设的规划
  • 开化网站建设无代码建站
  • html5 可以做网站吗关键词优化的技巧
  • 网站维护网站建设免费空间分享
  • 中国建设集团总公司官网深圳网站优化搜索
  • 临沂建设网站公司用asp.net做网站计数器
  • 长春网站建设优化企业企查查询官网入口
  • 做网站管理员需要哪些知识专业网站建设收费