AES和RSA加密的组合使用(三)

关于Base64的使用,相对应的可以延伸的了解学习其他相关加密方式的使用方法。

一般加密都可以使用三种加密方式,JDK自带API(JDK),Apache的common codes(CC),用bouncy castle(BC)实现。
三种实际,就Base64而言:

  1. jdk,支持jdk1.8以上,但是不推荐使用,后面多加换行,安卓和java使用的补=好的方式也不太相同(未深入研究)。
  2. common codes相当于是对jdk实现加密方式的封装,更简洁方便,并兼容问题,常推荐使用。
  3. bouncy castle的实现,相当于补充了jdk所不存在的加密方式,不管是字节数,还是填充方式等,在做IOS安卓的联调时,需要的填充方式,还有加密方式可能都需要用到此种方式,当然也支持Base64,为了不引入更多的jar包,使用BC方式加密时,建议使用BC的base64转码方式。

JDK的Base64的实现,不许多余jar:

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

// 用jdk实现
public static void jdkBase64(){
  try {
      BASE64Encoder encoder = new BASE64Encoder();
      String encode = encoder.encode(src.getBytes());
      System.out.println("encode:" + encode);
      BASE64Decoder decoder = new BASE64Decoder();
      System.out.println("decode:" + new String(decoder.decodeBuffer(encode)));
  } catch (Exception e) {
      e.printStackTrace();
  }
}

CC的Base64的实现,需引入jar(commons-codec-1.10.jar):

import org.apache.commons.codec.binary.Base64;

// 用Apache的common codes实现
public static void commonsCodesBase64() {
      byte[] encodeBytes = Base64.encodeBase64(src.getBytes());
      System.out.println("common codes encode:" + new String(encodeBytes));
      byte[] dencodeBytes = Base64.decodeBase64(encodeBytes);
      System.out.println("common codes decode:" + new String(dencodeBytes));
}

BC的Base64的实现,需引入jar(bcprov-jdk15on-149.jar):

import org.bouncycastle.util.encoders.Base64;

// 用bouncy castle实现
public static void bouncyCastleBase64(){
      byte[] encodeBytes = Base64.encode(src.getBytes());
      System.out.println("bouncy castle encode:" + new String(encodeBytes));
      byte[] dencodeBytes = Base64.decode(encodeBytes);
      System.out.println("bouncy castle decode:" + new String(dencodeBytes));
}

BC和CC的加密方式,不尽相同,但是实现的效果是一致的,具体使用哪种方式,当根据项目需求引入。
除Base64外,AES,RSA都能够使用JDK,BC,CC的方式实现,在使用BC做加密操作的时候,可以不使用BC原生jar所持有的方式创建Key等操作,而是使用JDK引入BC的注入方式来使用BC加密,更加的简单操作,具体实现可以更具不同的加密方式搜索下。

这周可能要忙一周,所以下周会贴出所有的AES和RAS加密的实现方式,使用JDK注入BC的方式,选择不同的最终兼容安卓IOS的填充方式实现,有兴趣可以点一波关注下周更新哦~

你可能感兴趣的:(AES和RSA加密的组合使用(三))