美文网首页Java学习笔记程序员技术干货
AES和RSA加密的组合使用(三)

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

作者: Dora404 | 来源:发表于2016-08-07 21:23 被阅读428次

关于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加密的组合使用(三)

    关于Base64的使用,相对应的可以延伸的了解学习其他相关加密方式的使用方法。 一般加密都可以使用三种加密方式,J...

  • python3中Crypto的AES和RSA

    RSA加密一般使用RSA/ECB/PKCS1Padding(算法/工作模式/填充方式),AES加密一般使用AES/...

  • AES和RSA加密的组合使用

    基于数据传输的安全性,看了些java相关加解密的博客和数据,参考了些某些官方提供的API,做出了如下加密设计:【加...

  • 【RSA】和【AES】加密

    网络请求是数据的传递使用了【RSA】和【AES】加密 需要使用用户信息的请求使用AES加密(需要秘钥进行加密)与用...

  • iOS常用加密算法

    AES(对称加密) 代码: 使用: RSA(非对称加密) 参考文章

  • AES+RSA加密联合使用

    AES+RSA加密联合使用 使用原因: 因为加密解密效率的问题 使用方式前端:前端对需要加密的数据进性AES加密,...

  • android 3DES加密和MD5加密

    经常使用加密算法:DES、3DES、RC4、AES,RSA等;对称加密:des,3des,aes非对称加密:rsa...

  • iOS加密--AES(CBC)和RSA组合加密(避坑)

    遇到的坑 项目中使用AES(CBC)和RSA组合进行加密,但是一直存在加密之后的数据,服务端无法解析,比例小但却是...

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

    关于接口安全加解密,做了一些联调,由于工作时间关系,一步步的将使用方法和技巧,实现步骤在简书上发布文章,记录下使用...

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

    每一个写接口的人都是天使,后来对接的时候折翼了。 ---心疼自己 好几天没有继续更新,主要是被卡在了对...

网友评论

    本文标题:AES和RSA加密的组合使用(三)

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