定义: 二进制文件可视化

Base64 是一种能将任意二进制文件用 64 种字元组合成字串的方法, 彼此之间是可以互相转换的. 也常用来表示字串加密后的内容, 例如电子邮件 (很多文本混杂大量 加号、/、大小写字母、数字和等号,一看就知道是 Base64)

Base64 编码步骤:

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

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

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

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

sun 包下的 BASE64Encoder

早期在 Java 上做 Base64 的编码与解码, 会使用到 JDK 里的 sun.misc 套件下的 BASE64Encoder 和 BASE64Decoder 这两个类, 缺点是编码和解码的效率不高

final BASE64Encoder encoder = new BASE64Encoder();
final BASE64Decoder decoder = new BASE64Decoder();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = encoder.encode(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));

apache 包下的 Base64

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

final Base64 base64 = new Base64();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = base64.encodeToString(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(base64.decode(encodedText), "UTF-8"));

util 包下的 Base64 (jdk8)

java 8 的 java.util 包下 Base64 类, 可用来处理 Base64 的编码与解码

final Base64.Decoder decoder = Base64.getDecoder();
final Base64.Encoder encoder = Base64.getEncoder();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = encoder.encodeToString(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(decoder.decode(encodedText), "UTF-8"));

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

shell 下的 base64 加密/解码

# 解码
echo 'ZmVmZWFqaXppamZlamlm' |base64 --decode
# -d or -D or --decode
# 当不以换行符结尾时, 解码会带有 %# 加密
echo -n 'fefeajizijfejif' |base64
# -n Do not print the trailing newline character 不打印尾随换行符

Java 的三种 Base64相关推荐

  1. Java的三种代理模式简述

    本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...

  2. Java的三种代理模式完整源码分析

    Java的三种代理模式&完整源码分析 Java的三种代理模式&完整源码分析 参考资料: 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCach ...

  3. Java的三种代理模式【附源码分析】

    Java的三种代理模式&完整源码分析 代理模式分为两种,静态代理和动态代理,动态代理包括JDK动态代理和Cglib动态代理. 静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象与代理 ...

  4. Java的三种程序基本结构

    Java三种程序基本结构 今天我们了解下Java的三种程序基本结构 理解什么是基本结构 主要分为 :1. 顺序结构 2. 选择结构 3. 循环结构 一丶顺序结构 顺序结构就是程序从上到下一行一行的执行 ...

  5. java的三种技术架构

    Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platform ...

  6. JAVA爬虫三种方法

    文章目录 前言 一.JDK 二.HttpClient 三.Jsoup 总结 前言 记录JAVA爬虫三种方式 一.JDK 使用JDK自带的URLConnection实现网络爬虫. public void ...

  7. 在java中三种编程思想(OOA,OOD,OOP)

    在java中三种编程思想:OOA,OOD,OOP OOA 一.OOA的主要原则. 二.面向对象分析产生三种分析模型 三.OOA的主要优点 四.OOA方法的基本步骤 OOD 一.OOD背景知识 二.OO ...

  8. Java list三种遍历方法性能比较

    从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...

  9. java list三种遍历方法性能比較

    从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...

  10. java反射原理三种,Java反射的原理,作用

    什么是反射,反射原理 java类的执行需要经历以下过程 编译:.java文件编译后生成.class字节码文件 加载:类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时 ...

最新文章

  1. C++中typedef和define的区别
  2. 2018年4月22日笔记
  3. apache activemq ActiveMQ 修改密码
  4. 2009计算机统考真题,2009年计算机统考真题(完整版).PDF
  5. pandas基本数据处理
  6. fatal error: alsa/asoundlib.h: 没有那个文件或目录错误解决办法
  7. php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天10:23”等
  8. Mac OS X Glut build instructions
  9. 利用 Celery 构建 Web 服务的后台任务调度模块
  10. 服务器搭建-Linux基础知识
  11. Flutter 登录页面Demo 复制可使用
  12. Java 多线程基本概念
  13. 产业研发用房是什么意思_【企业】米东中小微创业产业园:筑巢引凤栖 花开蝶自来...
  14. 黑马程序员 Python学习笔记之变量
  15. 区块链+高薪,你还等什么?
  16. 广金计算机网络有限公司怎么样,广东金融学院到底怎么样!?
  17. CDA Level1复盘总结
  18. 关于重装系统后开始菜单栏anaconda3文件夹消失问题的解决办法
  19. 深入理解Linux进程调度(0.4)
  20. R语言入门——工作空间管理函数

热门文章

  1. 坐标系对应EPSG代号、经度范围、中央经线
  2. 日本java图书馆_菜鸡的Java笔记 图书馆
  3. 电子商务概论(农)之章节课后题
  4. 计算机CAD作文,CAD:电脑系统字体和CAD字体的区别
  5. 着迷英语900句_字体令人着迷
  6. unity3d模型制作规范
  7. wordpress付费阅读_2020年27个最佳WordPress杂志主题[免费+付费]
  8. VS2005中远程调试的配置方法
  9. 软件测试流程图及描述
  10. 新巴巴运动网完整教程