常用加解密算法 - Base64

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 变体。