一丶Base64 是什么?
Base64是一种数据编码方式,主要用于将任意类型的数据转换为可打印的ASCII字符,以便于网络传输以及存储。Base64最初是在电子邮件中使用,因为电子邮件只支持ASCII字符集,而二进制数据无法直接放在邮件正文中。
Base64使用的字符集包括“A”到“Z”、“a”到“z”、“0”到“9”、“+”、“/”和“=”,总共64个字符,因此得名。
二丶Base64应用场景
Base64广泛应用于网络传输、数据存储和加密等领域。以下是一些具体的应用场景:
-
网络传输
Base64适用于各种网络传输协议,例如HTTP、FTP等。常见的应用包括将图片、视频等二进制数据转换为Base64字符串,然后在网页中以Data URI的方式使用。 -
数据存储
Base64可以将二进制数据存储为可打印的文本格式,以便于在文本文件中存储和读取。例如,一些数据库软件会将二进制数据转换为Base64字符串存储。 -
加密
在某些情况下,Base64也被用作加密算法。尽管Base64是一种编码方式,而不是加密方式,但是根据特定的需求和使用场景,可以将其作为简单的加密算法使用。
三丶编码原理
四丶Base64的优缺点
-
优点
Base64的主要优点是具有平台无关性和数据安全性。
a. 平台无关性
因为Base64使用的字符集是ASCII字符集,因此可以在任何系统、任何编程语言中使用。这使得Base64成为一种非常通用的数据编码方式。
b. 数据安全性
由于Base64将二进制数据转换为可打印字符,因此可以避免一些不可见字符在传输过程中被过滤或替换的问题。同时,Base64也能够防止一些不可预料的输入由于编码而导致系统崩溃。
c.难识别
经过Bas64编码的字符,人的肉眼是识别不出来信息的。在安全上可以得到保障 -
缺点
a. 数据增大
Base64编码会将原本二进制的数据转换为可打印的ASCII字符,这意味着编码后的数据实际上比原始数据要大。具体来说,每三个字节的原始数据会被编码为四个字符,因此Base64编码会将数据增大约33%。
b. 某些字符集不支持
尽管Base64使用的字符集是ASCII字符集,但是在一些非常规的字符集中,可能会出现无法识别Base64字符的情况。
五丶编码和解码的使用
Base64工具类提供了一套静态方法获取下面三种BASE64编解码器
基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/。
URL:输出映射到一组字符A-Za-z0-9+_,输出是URL和文件。
MIME:输出隐射到MIME友好格式。输出每行不超过76字符,并且使用’\r’并跟随’\n’作为分割。编码输出最后没有行分割。
基本编码
String original = "床前明月光,疑是地上霜"; //原始字符串
String strEncode = Base64.getEncoder().encodeToString(original.getBytes(StandardCharsets.UTF_8));
System.out.println("原始串:"+original);
System.out.println("Base64编码 :"+strEncode);
//解码
byte[] strDecode = Base64.getDecoder().decode(strEncode);
System.out.println("Base64解码:"+new String(strDecode,StandardCharsets.UTF_8));
打印
其他用法请参考
本文有借鉴到以下文章:
https://www.python100.com/html/91084.html
https://blog.csdn.net/FightingITPanda/article/details/83305100.
https://www.runoob.com/java/java8-base64.html
https://blog.csdn.net/mijichui2153/article/details/106629860