Java 的三种 Base64
定义: 二进制文件可视化
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相关推荐
- Java的三种代理模式简述
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...
- Java的三种代理模式完整源码分析
Java的三种代理模式&完整源码分析 Java的三种代理模式&完整源码分析 参考资料: 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCach ...
- Java的三种代理模式【附源码分析】
Java的三种代理模式&完整源码分析 代理模式分为两种,静态代理和动态代理,动态代理包括JDK动态代理和Cglib动态代理. 静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象与代理 ...
- Java的三种程序基本结构
Java三种程序基本结构 今天我们了解下Java的三种程序基本结构 理解什么是基本结构 主要分为 :1. 顺序结构 2. 选择结构 3. 循环结构 一丶顺序结构 顺序结构就是程序从上到下一行一行的执行 ...
- java的三种技术架构
Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platform ...
- JAVA爬虫三种方法
文章目录 前言 一.JDK 二.HttpClient 三.Jsoup 总结 前言 记录JAVA爬虫三种方式 一.JDK 使用JDK自带的URLConnection实现网络爬虫. public void ...
- 在java中三种编程思想(OOA,OOD,OOP)
在java中三种编程思想:OOA,OOD,OOP OOA 一.OOA的主要原则. 二.面向对象分析产生三种分析模型 三.OOA的主要优点 四.OOA方法的基本步骤 OOD 一.OOD背景知识 二.OO ...
- Java list三种遍历方法性能比较
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...
- java list三种遍历方法性能比較
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...
- java反射原理三种,Java反射的原理,作用
什么是反射,反射原理 java类的执行需要经历以下过程 编译:.java文件编译后生成.class字节码文件 加载:类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时 ...
最新文章
- C++中typedef和define的区别
- 2018年4月22日笔记
- apache activemq ActiveMQ 修改密码
- 2009计算机统考真题,2009年计算机统考真题(完整版).PDF
- pandas基本数据处理
- fatal error: alsa/asoundlib.h: 没有那个文件或目录错误解决办法
- php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天10:23”等
- Mac OS X Glut build instructions
- 利用 Celery 构建 Web 服务的后台任务调度模块
- 服务器搭建-Linux基础知识
- Flutter 登录页面Demo 复制可使用
- Java 多线程基本概念
- 产业研发用房是什么意思_【企业】米东中小微创业产业园:筑巢引凤栖 花开蝶自来...
- 黑马程序员 Python学习笔记之变量
- 区块链+高薪,你还等什么?
- 广金计算机网络有限公司怎么样,广东金融学院到底怎么样!?
- CDA Level1复盘总结
- 关于重装系统后开始菜单栏anaconda3文件夹消失问题的解决办法
- 深入理解Linux进程调度(0.4)
- R语言入门——工作空间管理函数