美文网首页
鉴权和加密

鉴权和加密

作者: 浮海_2015 | 来源:发表于2017-07-15 15:22 被阅读44次

    加密

    一、服务端

    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解压缩,得到明文数据

    相关文章

      网友评论

          本文标题:鉴权和加密

          本文链接:https://www.haomeiwen.com/subject/frtzhxtx.html