Base64简介
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来标识二进制数据的方法。
Base64是一种可逆的编码方式,是一种用64个Ascii字符来表示任意二进制数据的方法。
主要用于将不可打印字符转换为可打印字符,或者简单的说将二进制数据编码为Ascii字符,
什么时候使用Base64
- Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP写一下传输二进制数据需要将二进制数据转化为字符数据,网络传输只能传输可打印字符,在ASCII码中规定,0-31、128这33个字符属于控制字符,32~127这95个字符属于可打印字符。那么其它字符(如中文等其他语言)怎么传输呢,Base64就是其中一种方式,
- 将图片等资源文件以Base64编码形式直接放于代码中,使用的时候反Base64后转换成Image对象使用。
- 偶尔需要用这条纯文本通道传一张图片之类的情况发生的时候,就会用到Base64,比如多功能Internet 邮件扩充服务(MIME)就是用Base64对邮件的附件进行编码的。
优缺点
- 优点:可以将二进制数据转化为可打印字符,方便传输数据,对数据进行简单的加密,肉眼安全。
- 缺点:内容编码后体积变大,编码和解码需要额外工作量
工具类
import java.io.UnsupportedEncodingException;
import java.util.Base64;
public class Base64Utils {
private static final Base64.Decoder decoder = Base64.getDecoder();
private static final Base64.Encoder encoder = Base64.getEncoder();
public static String base64Encode(String text) {
try {
byte[] textByte = text.getBytes("UTF-8");
String encodedText = encoder.encodeToString(textByte);
//System.out.println(encodedText);
return encodedText;
} catch (UnsupportedEncodingException e) {
System.out.println("Error :" + e.getMessage());
}
return "error";
}
public static String base64Decode(String encodedText) {
try {
String text = new String(decoder.decode(encodedText), "UTF-8");
//System.out.println(text);
return text;
} catch (UnsupportedEncodingException e) {
System.out.println("Error :" + e.getMessage());
}
return "error";
}
}