开始这篇文章之前,首先需要明白,Base64的主要用途并不是加密,而是将二进制数转换成方便在网络上传递的字符。
Base64只能算是一个编码算法,对数据内容进行编码从而适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是方式初级又简单(用于加密的话轻松就能破解就没有意义了)。

一、简介(什么是Base64)

这里直接沿用百度百科中的介绍:
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。
可参考:《base64-百度百科》

二、原理(怎样进行编码)

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

1、规则
(1)把3个字节变成4个字节。
(2)每76个字符加一个换行符。
(3)最后的结束符也要处理。

2、Base64字母表(最后的到的Base64编码)

3、实例
例1:
转换前 11111111, 11111111, 11111111 (二进制)
转换后 00111111, 00111111, 00111111, 00111111 (二进制)
上面的三个字节是原文,下面的四个字节是转换后的Base64编码,其前两位均为0。
例2:
转换前 10101101,10111010,01110110
转换后 00101011, 00011011 ,00101001 ,00110110
十进制 43 27 41 54
对应码表中的值 r b p 2
所以上面的24位编码,编码后的Base64值为 rbp2
解码同理,把 rbq2 的二进制位连接上再重组得到三个8位值,得出原码。

三、Java中的Base64

Java上做Base64的编码与解码也是有一个进化的过程,从早期使用JDK中sun.misc.BASE64Encoder和sun.misc.BASE64Decoder两个类;到Apache Commons Codec提供的org.apache.commons.codec.binary.Base64;再到JDK8的java.util.Base64。效率可以说是越来越高,显而易见,我们还是推荐使用java.util.Base64的。
https://blog.csdn.net/zhou_kapenter/article/details/62890262

1、sun.misc.BASE64Encoder和sun.misc.BASE64Decoder

2、org.apache.commons.codec.binary.Base64

3、java.util.Base64
详细介绍后续配上代码实例进行补充。

Java中Base64的解析相关推荐

  1. java中base64编码加密和android中base64编码加密不一样?base64编码解析错误?

    在android的base64加密后得到: WwogIHsKICAgICJ0MSI6ICIwIiwKICAgICJ0MiI6ICIyNDM4NCIsCiAgICAidDMiOiAiIiwKICAgIC ...

  2. java解析xml实例_在java中使用dom解析xml的示例分析

    本篇文章介绍了,在java中使用dom解析xml的示例分析.需要的朋友参考下 dom是个功能强大的解析工具,适用于小文档 为什么这么说呢?因为它会把整篇xml文档装载进内存中,形成一颗文档对象树 总之 ...

  3. JAVA中利用DOM解析XML文档

    JAVA中利用DOM解析XML文档 package org.sws.utils; import java.io.File;import java.io.IOException; import java ...

  4. java中main函数解析

    作者:xwdreamer 出处:http://www.cnblogs.com/xwdreamer 欢迎任何形式的转载,但请务必注明出处. 从写java至今,写的最多的可能就是主函数 public st ...

  5. java中的de是什么_【转】java中main函数解析

    源地址:http://www.cnblogs.com/xwdreamer/archive/2012/04/09/2438845.html 从写java至今,写的最多的可能就是主函数 public st ...

  6. 集合类 Java中的集合类解析和一些有深入的面试题

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

  7. java中 Excel文件解析及超大Excel文件读写

    本文主要对Excel中数据的解析和生成进行总结 前言 在应用程序的开发过程中,我们经常要用到Excel进行数据的导入或导出.所以,在通过Java语言实现此类需求时,通常会对Excel文件进行解析或生成 ...

  8. java中base64的使用

    文章目录 Base64 使用场景 为什么图片要用base64 base64图片缺点: 编码规则 base64的使用 base58 前端显示base64图片 文件流和base64文件上传区别 用处 Ba ...

  9. Java中的文件解析——Excel解析

    在日常的开发过程中,经常会使用到excel工作簿进行数据的保存,那么在java中,通常会使用第三方提供的技术来进行excel文件的解析,比如:Apache POI.JXL.Alibaba EasyEx ...

  10. java中的single_解析java泛型(一)

    对于我们java中的泛型,可能很多人知道怎么使用并且使用的还不错,但是我认为想要恰到好处的使用泛型,还是需要深入的了解一下它的各种概念和内部原理.本文将尽可能的囊括java泛型中的重要的概念.主要内容 ...

最新文章

  1. DNS基本原理与配置
  2. 谷歌相册_Google相册中的新存档功能是什么?
  3. python装好了怎么启动车_【填空题】Python安装好后,可以直接在CMD命令行下输入( )命令, 可启动交互式编程,提示窗口如下:...
  4. Scala程序将字符串转换为整数
  5. vue $refs的基本用法
  6. 如何使用Xilisoft Video Editor快速剪切视频
  7. Centos 7环境MySql8.0.28源码安装
  8. 监控Linux磁盘情况,进行邮件告警
  9. Dima and Salad 01背包变形
  10. K-Stack 2021牛客多校2
  11. MATLAB 对试验点进行三次拟合
  12. 世界第一台计算机是多少位,世界上第一台计算机的字长是多少位?
  13. 50岁能自学python吗_35岁了零基础自学Python可行吗?
  14. hive on tez 执行任务报错
  15. 平板用什么远程操控电脑
  16. jsemu - 用 JavaScript 写成的模拟器大集合
  17. kiwi浏览器下载及介绍
  18. 生物AI插图素材获取和拼装指导
  19. 人工智能公需科目答案_2020年(公需科目)人工智能与健康考试题库试题及答案(十).docx...
  20. Ubuntu 14.04 搭建 L2TP Server

热门文章

  1. 计算机情绪识别属于什么方向,情绪检测器
  2. 求职面试-HR会问你什么问题?
  3. 真解决EasyUi的 select 使用 class=“easyui-combobox“ 样式绑定onSelect/onChange事件
  4. 一文读懂内生性问题之两阶段最小二乘法TSLS
  5. 中国数字化转型的未来与建议
  6. 使用ps 制作gif 动图
  7. 中标麒麟/NeoKylin U盘安装系统
  8. 秃头真的是程序员的标配吗
  9. 谈谈软件人的职业规划
  10. 要闻君说:华为“发飙”了;快手抛出了1000+社招岗位;迅雷2018年度财报:云连续三年上涨;定论!小米成立AIoT战略委员会...