AES加解密

AES加解密

模块名称

  • aes

模块引入

  • Weex

const aes = app.requireModule("aes");

  • H5

let aes = requireModuleJs('aes');

模块方法

  • setTelecomAesKeyFormat(int type, boolean randomKey, boolean noPadding) —Android

  • setTelecomAesKeyFormat(int type, boolean randomKey) —IOS

    • 初始化方法
    • 参数说明
      参数 说明
      type 值只能是1或2,1代表AES128位加密;2代表AES256位加密
      randomKey AESKEY是否随机;false时,则会在初始化过程中随机生成一把密钥 之后所有加解密将一直使用此把公钥 建议并发报文模式采用此时方式;true时,则密钥会在每次加密时随机生成,并且密钥只会保存最后一次加密的一把 因此此种状态下,加解密仅支持成对出现 推荐单步报文模式使用
      noPadding Android独有,true时,第一段RSA公钥加密AES秘钥不参与随机数运算密文保持不变;反之每次第一段密文会变
  • telecomAesEncrypt(String text, String key)

    • 加密接口,加密客户端的上送报文

    • 参数说明

      参数 说明
      text 待加密的报文信息
      key 用于加密报文的RSA公钥
    • 返参说明:String类型直接接收该方法结果,得到加密结果,如

      this.clientencrypt = telecomAesEncrypt("test123456", "RSA公钥")

  • telecomAesDecrypt(String text)

    • 解密接口,解密服务端的返回报文

    • 参数说明:text:服务端返回的待解密的AES密文

    • 返参说明:String类型直接接收该方法结果,得到解密结果,如

      this.clientdecrypt = telecomAesDecrypt("AES密文")

报文通信加解密流程

  • 客户端动态库中动态生成AES密钥;
  • 使用传入动态库的RSA公钥对AES的密钥进行加密,得到密文1;
  • 使用AES密钥对传入动态库的报文进行加密,得到密文2;
  • 对传入动态库的报文做MD5摘要运算,得到密文3;
  • 将密文1、密文2、密文3拼接,使用竖线“|”分隔,返回给客户端。
  • 客户端将加密后的报文上送服务端;
  • 服务端收到报文后调用我们提供的解密模块进行解密,得到报文原文。
  • 服务端返回报文使用服务端解密模块中提供的加密方法进行加密。
  • 客户端收到服务端下发的报文后,使用动态库中的解密方法进行解密即可得到返回报文的原文信息。
  • AES版本,算法使用RSA+AES+MD5