java-Base64编码工具类
一、什么是Base64?
百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可
打印字符来表示二进制数据的方法”。
什么是“可打印字符”呢?为什么要用它来传输8Bit字节码呢?在回答这两个问题之前我们有必要来思考一下什么情况下需要使用Base64?
Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转
换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。
什么是可打印字符?在ASCII码中规定,0~31、127这33个字符
属于控制字符,32~126这95个字符属于可打印字符,也就是说网络传输只
能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。
二、Java中实现Base64
1、获取编码器
Base64的方法
//静态属性,该类使用RFC 4648和RFC 2045中规定的Base64编码方案来实现用于编码字节数据的编码器。
static class Base64.Encoder//返回一个Base64.Encoder编码使用URL and Filename safe型base64编码方案
static Base64.Encoder getUrlEncoder()//返回一个Base64.Encoder编码使用MIME型base64编码方案。
static Base64.Encoder getMimeEncoder()//返回一个Base64.Encoder ,它使用具有指定行长度和行分隔符的MIME类型base64编码方案进行编码。
static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator)//返回一个Base64.Encoder编码使用Basic型base64编码方案。
static Base64.Encoder getEncoder()
2、编码器方法
Base64.Encoder的方法
byte[] encode(byte[] src)//使用Base64编码方案将指定字节数组中的所有字节编码为新分配的字节数组。
//使用Base64编码方案对来自指定字节数组的所有字节进行编码,将生成的字节写入给定的输出字节数组,从偏移0开始。
int encode(byte[] src, byte[] dst)
//使用Base64编码方案将所有剩余字节从指定的字节缓冲区编码到新分配的ByteBuffer中。
ByteBuffer encode(ByteBuffer buffer)
//使用Base64编码方案将指定的字节数组编码为字符串。
String encodeToString(byte[] src)
//返回一个编码器实例,编码器等效于此编码器实例,但不会在编码字节数据的末尾添加任何填充字符。
Base64.Encoder withoutPadding()
//使用Base64编码方案包装用于编码字节数据的输出流。
OutputStream wrap(OutputStream os)
3、获取解码器
Base64的方法
//该类使用RFC 4648和RFC 2045中规定的Base64编码方案来实现用于解码字节数据的。
static class Base64.Decoder//返回Base64.Decoder解码使用Basic型base64编码方案。
static Base64.Decoder getDecoder()//返回一个Base64.Decoder解码使用MIME型BASE64解码方案。
static Base64.Decoder getMimeDecoder()//返回Base64.Decoder解码使用URL and Filename safe型base64编码方案。
static Base64.Decoder getUrlDecoder()
4、解码器方法
Base64.Decoder的方法
//使用Base64编码方案从输入字节数组中解码所有字节,将结果写入新分配的输出字节数组。
byte[] decode(byte[] src)
//使用Base64编码方案从输入字节数组中解码所有字节,将结果写入给定的输出字节数组,从偏移0开始。
int decode(byte[] src, byte[] dst)
//使用Base64编码方案从输入字节缓冲区中解码所有字节,将结果写入新分配的ByteBuffer。
ByteBuffer decode(ByteBuffer buffer)
//使用Base64编码方案将Base64编码的字符串解码为新分配的字节数组。
byte[] decode(String src)
//返回一个输入流,用于解码Base64编码字节流。
InputStream wrap(InputStream is)
5、案例
// 编码
String encode = Base64.getEncoder().encodeToString("额我问问问".getBytes("UTF-8"));
System.out.println(encode);//6aKd5oiR6Zeu6Zeu6Zeu// 解码
byte[] decode = Base64.getDecoder().decode(encode);
System.out.println(new String(decode, "UTF-8"));//额我问问问
java-Base64编码工具类相关推荐
- 图片压缩处理以及网络图片转base64编码工具类
一.需求分析 在项目中,需要对本地的图片进行缩放处理(按指定长宽缩放等),方便前端展示缩略图,获取更快的页面加载速度.另外就是针对网络上的图片需要进行base64编码处理(如百度信息流的图片上传需要对 ...
- 图片转Base64 编码工具类
一.简介:本工具类包含本地图片转Base64编码 和 远程图片转 Base64编码 二.代码实例 package org.jeecg.common.util;import java.io.ByteAr ...
- Java(35):Java Base64编码和解码工具类
Java Base64编码和解码工具类 Base64Util工具类: package com.ciphergateway.utils; import java.io.UnsupportedEncodi ...
- java前补零工具类_java生成编码工具类,不足补0
~~~~~ 小小工具类!你值得拥有 简单粗暴,直接上代码 import java.text.NumberFormat; /** * @author: Abner * @description: 编码工 ...
- Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试
一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...
- md5编码java_MD5编码工具类 MD5Code.java
package com.util; /** * MD5编码工具类 * */ public class MD5Code { static final int S11 = 7; static final ...
- java md5 decode_MD5编码工具类 MD5Code.java
1 packagecom.util;2 /** 3 * MD5编码工具类4 *http://www.cnblogs.com/sosoft/ 5 */ 6 public classMD5Code {7 ...
- MD5编码工具类 MD5Code.java
1 package com.util; 2 /** 3 * MD5编码工具类 4 * 5 */ 6 public class MD5Code { 7 static final int S11 = 7; ...
- android Java BASE64编码和解码二:图片的编码和解码
1.准备工作 (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础 (2)添加 ImgHelper 工具类 package com.a ...
- Java实现AES工具类(包含CBC和ECB)
目录 一.简介 二.AES工具类 三.实践 3.1 AES之ECB模式加密 3.2 AES之ECB模式解密 3.3 AES之CBC模式加密 3.4 AES之CBC模式解密 结语 一.简介 密码学中 ...
最新文章
- WDF驱动中KMDF与UMDF区别
- 什么是DHCP?—Vecloud微云
- 3-unit1 IPv6网络的管理
- ARP(Address Resolution Protocol)地址解析协议初识
- boost线程(二)
- KeyboardEvent keyMap
- 洛谷—— P2658 汽车拉力比赛
- 在计算机网络中vc是,计算机网络——第一章 体系
- 赋能行业 共建生态 阿里巴巴首次亮相义乌标准展
- mysql 自增序列(转)
- NHibernate Issues之1898:命名查询
- Python设置随机数种子
- 2021 腾讯校招 + 后台开发面经(已 offer)
- Matlab:16进制excel转2进制mat
- 激发数据潜力,“东数西算”带动数据中心新发展
- 让 Odoo POS 支持廉价小票打印机
- Arduino ESP8266利用AJAX局部动态更新网页内容
- Unity3d开发之十二:邮箱正则验证js和c#
- 以DA方式通过opcdaauto.dll访问opc服务器异步操作异常0x80040200问题
- 微型计算机BX和AX区别,微机原理及接口技术-习题答案