一、Base64是什么
Base64是一种编码方式,用于传输8位(8 bit)字节码,实质基于64个可打印字符来表示二进制数据的一种方法。
这64个可打印字符就是: A-Za-z0-9+/
//26+26+10+2 = 64个
Base64编码是数据从二进制到字符的过程,在金融类系统中,系统的报文传输一般都会用Base64进行转码,然后再进行其他操作。Base64编码后数据具有不可读性,需要对应的Base64解码后才能阅读。
Base64编码使用8bit表示原来字符的6bit,所以编码后,每3个ASCII码会被转换成4个字符。例如:
“BAS”经Base64编码后变为“QkFT”,Base64字符与索引对应关系见下图:
当ASCII码不是3位或者3的倍数呢,我们再看一种情况:
“B”经过Base64编码后,变为了“Qg==”,这时我们注意到,当位数不够时,要在bit分组时末尾补0,全是0或者没有数的话,便用“=”补齐字符差位。
二、在Java中怎么实现Base64
Java中已经有Base64的封装类了,只需调用即可,所以使用还是很方便的啦。
import java.io.UnsupportedEncodingException;
import java.util.Base64;
class Base64Encoding {
public static String base64Encoding(String str) throws UnsupportedEncodingException{
return Base64.getEncoder().encodeToString(str.getBytes("UTF-8"));
}
public static void main(String[] args) throws UnsupportedEncodingException {
String str1 = "BAS";
String str2 = "B";
System.out.println(str1+"\n 经Base64编码后成为:\n"+base64Encoding(str1)+"\n");
System.out.println(str2+"\n 经Base64编码后成为:\n"+base64Encoding(str2));
}
}
//结果:----------------------------------------------------------------------------------
//BAS
//经Base64编码后成为:
//QkFT
//B
//经Base64编码后成为:
//Qg==
以上。