Base64是一种基于64个可打印字符(如大小写字母、数字、+、/ 等)来表示二进制数据的编码方式。它将二进制数据按每3字节(24位)分组,每组拆分为4个6位的单元,每个单元对应一个Base64字符,不足3字节时用 = 填充,最终将二进制数据转换为可显示的文本字符串。
应用例子
- 邮件附件传输
早期邮件协议仅支持文本传输,Base64可将图片、文档等二进制文件编码为文本,确保附件能正常发送,例如图片文件编码后可嵌入邮件正文。
- URL安全参数传递
部分场景下URL需传输二进制数据(如用户头像地址),Base64编码可将数据转为文本,避免特殊字符导致URL解析错误(会用 % 替换 + 和 /,称为Base64URL变体)。
- 配置文件加密
一些软件配置文件会用Base64对敏感信息(如数据库连接密码)进行简单编码,虽非强加密,但可避免明文存储。
- 日志记录二进制数据
程序日志中若需记录二进制数据(如网络请求中的二进制内容),Base64编码可将其转为文本,便于日志存储和查看。
Java中Base64加解密示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import java.util.Base64;
public class Base64Demo {
public static void main(String[] args) { String originalData = "Hello, Base64!";
String encodedData = Base64.getEncoder().encodeToString(originalData.getBytes()); System.out.println("编码结果:" + encodedData);
byte[] decodedData = Base64.getDecoder().decode(encodedData); System.out.println("解码结果:" + new String(decodedData)); }
}
|
1 2
| 编码结果:SGVsbG8sIEJhc2U2NCE= 解码结果:Hello, Base64!
|
注意事项
- 编码本质
Base64是编码而非加密,解码后可还原原始数据,不可用于敏感信息的安全存储(需配合加密算法如AES后编码)。
- URL场景
使用 Base64.getUrlEncoder() 或 encodeBase64URLSafeString(),避免 + 和 / 导致URL解析错误。
- 填充处理
部分场景需移除填充符(如URL参数),可使用 withoutPadding() 或 URLSafe 变体。