当前位置:   article > 正文

Java:Base64编码快速掌握_base64encoder

base64encoder

定义:

Base64 是一种二进制数据的编码方式,类比UTF-8、UTF-16是对字符串的编码方式一样,能将任意二进制文件用 64 种字元组合成字串的方法, 彼此之间是可以互相转换的. 也常用来表示字串加密后的内容。

Base64 编码步骤:

第一步,将每三个字节作为一组,一共是24个二进制位

第二步,将这24个二进制位分为四组,每个组有6个二进制位 (因为 6 位 2 进制最大数为 63)

第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节

第四步,根据序号表(0-63),得到扩展后的每个字节的对应符号就是Base64的编码值

方式一:sun 包下的 BASE64Encoder、BASE64Decoder

 一、JDK里的sun.misc包下的 BASE64Encoder 和 BASE64Decoder 这两个类, 缺点是编码和解码的效率不高

  1. public static void main(String[] args) throws IOException {
  2. String str = "test";
  3. BASE64Encoder base64Encoder = new BASE64Encoder();
  4. String encoderStr = base64Encoder.encode(str.getBytes(StandardCharsets.UTF_8));
  5. BASE64Decoder base64Decoder = new BASE64Decoder();
  6. byte[] decoderByte = base64Decoder.decodeBuffer(encoderStr );
  7. String decoderStr = new String(decoderByte);
  8. System.out.println(decoderStr);
  9. }

 方法二:apache 包下的 Base64

二、比 sun 包更精简,实际执行效率高不少, 缺点是需要引用 Apache Commons Codec, 但 tomcat 容器下开发, 一般都自动引入可直接使用。

  1. public static void main(String[] args) throws IOException {
  2. String str = "test";
  3. Base64 base64 = new Base64();
  4. String encoderdStr = base64.encodeToString(str.getBytes(StandardCharsets.UTF_8));
  5. byte decoderByte = base64.decode(encoderdStr);
  6. String decoderStr = new String(decoderByte);
  7. System.out.println(decoderStr;
  8. }

 方法三:util 包下的 Base64

三、Java 8 提供的 Base64 效率最高. 实际测试编码与解码速度, Java 8 的 Base64 要比 sun包下的要快大约 11 倍,比 Apache 的快大约 3 倍。

  1. public static void main(String[] args) {
  2. String str = "test";
  3. Base64.Encoder encoder = Base64.getEncoder();
  4. String encoderStr = encoder.encodeToString(str.getBytes(StandardCharsets.UTF_8));
  5. Base64.Decoder decoder = Base64.getDecoder();
  6. byte[] decoderByte = decoder.decode(encoderStr);
  7. String decoderStr = new String(decoderByte);
  8. System.out.println(decoderStr);
  9. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1020262
推荐阅读
相关标签
  

闽ICP备14008679号