Rust 的 Base64

本文汇总 Rust 中使用 base64 crate 的方式,涵盖常用 API、URL 安全变体、错误处理与小型文件 I/O 示例。

概览

使用 base64 依赖。基础函数为 encode/decode; 更灵活的 Engine API 位于 base64::engine 下,常用引擎包括 general_purpose::STANDARDgeneral_purpose::URL_SAFE,支持带/不带填充。

添加依赖

[dependencies]
base64 = "0.22"

快速示例

基础编码/解码

use base64::{encode, decode};

fn main() {
	let text = "Hello, world";
	let b64 = encode(text);
	println!("{}", b64); // SGVsbG8sIOS4lueVjw==

	let bytes = decode(&b64).expect("valid base64");
	let decoded = String::from_utf8(bytes).expect("utf8");
	println!("{}", decoded); // Hello, world
}

URL 安全变体(Engine)

use base64::{engine::general_purpose, Engine as _};

fn main() {
	let raw = b"token:id/123+scope";
	let url_b64 = general_purpose::URL_SAFE.encode(raw);
	println!("{}", url_b64); // dG9rZW46aWQvMTIzK3Njb3Bl

	let bytes = general_purpose::URL_SAFE.decode(url_b64).unwrap();
	println!("{:?}", bytes); // b"token:id/123+scope"
}

错误处理

use base64::decode;

fn main() {
	match decode("@@invalid@@") {
		Ok(bytes) => println!("{} bytes", bytes.len()),
		Err(err) => eprintln!("Decode failed: {}", err),
	}
}

文件 I/O

use std::{fs, io};
use base64::{engine::general_purpose, Engine as _};

fn main() -> io::Result<()> {
	// Binary file → Base64 text
	let bytes = fs::read("input.bin")?;
	let b64 = general_purpose::STANDARD.encode(&bytes);
	fs::write("output.txt", b64)?;

	// Base64 text → Binary file
	let b64_text = fs::read_to_string("output.txt")?;
	let data = general_purpose::STANDARD
		.decode(b64_text.trim())
		.expect("valid base64");
	fs::write("restored.bin", data)?;
	Ok(())
}

注意事项