鉴权和加密

加密

一、服务端

  1. 准备工作
717780da-8d4c-41d1-8ce6-715e32621181-image.png
  1. 调用非c接口,即可使用正式鉴权接口

二、客户端请求加密流程

  1.  先取得要传输的data 部分数据,转换为byte[] 数据
    
  2.  对byte[] 数据进行 Gizp 压缩
    
  3.  对gzip 压缩后的数据进行  异或运算,算法如下图
    
  4.      48634d81-ebdd-4304-ba15-ab32a722f1d3-image.png
    
  5.   对异或运算后的直接数组进行Base64位运算,得到传输字符串,通过http请求传输到服务端
    

压缩

String raw = "{\"phone\":\"15827580908\",\"channel\":\"111\",\"os\":\"web\"}";
byte[] orgBytes = raw.getBytes("UTF-8");
System.out.println("orgBytes = "+new String(orgBytes));
byte[] sourceCompressBytes = GzipUtility.compress(orgBytes);
System.out.println("sourceCompressBytes = "+new String(sourceCompressBytes));

异或加密

long time = System.currentTimeMillis();
byte[] encrypt = EncryptHelper.excuteXorEncrypt(sourceCompressBytes,""+time);
System.out.println("encyrpt = "+new String(encrypt)+", time = "+time);
String base64Str = DigestUtils.encodeBase64(encrypt);
  1. 服务端接收到客户端的数据后,首先进行参数签名校验,目前对以下参数要进行MD5签名校验
  2. md5(service + data + salt + version + appid);
  3. 服务端取得数据 data 后,进行Base64解码,然后在按照 异或运算解密,最后进行gzip解压缩,得到明文数据

三、服务端数据返回部分

  1. 服务端对要返回的body 部分也会进行 gzip压缩、异或加密、base64编码,客户端拿到服务端数据后,
  2. 要同上述流程一样进行base64解码、异或解密、gzip解压缩,得到明文数据
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,463评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,871评论 6 13
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 12,691评论 6 152
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 8,184评论 0 14
  • 许多程序员,写代码需要把代码框起来,在简书里,可以在代码前后加上```,就可以了:如下:
    Mr_码客阅读 1,170评论 0 0