> cd ./tools/base64
本地计算 · 无账号
按 UTF-8 字节做 Base64,适合中文文本。
这是什么
Base64 把任意字节序列编成只用字母、数字与少量符号的 ASCII 文本,常见于邮件附件、Data URL、令牌片段。本工具在浏览器做文本与 Base64 互转,方便检查「这一串解出来是什么」,或把短文本编成可粘贴形式。编解码均在本地完成。
原理
算法按每 3 个字节(24 bit)一组,切成 4 个 6 bit 索引,查表得到 A–Z、a–z、0–9、+、/。长度不是 3 的倍数时用 = 填充,使输出长度仍是 4 的倍数。解码则反向:去掉空白,按 4 字符一组还原字节。它不提供保密性——任何拿到编码串的人都能解码——只解决「二进制如何安全地走纯文本通道」。本页按 UTF-8 理解输入字符串再编码。和「十六进制转储」相比,Base64 更短,但仍比原文膨胀约三分之一;和压缩算法也无关——膨胀是表示形式的代价。理解分组与填充后,你就能解释为什么有的串以一个或两个等号结尾,以及为什么少写一个字符就会整组错位。
什么时候用
调试接口里的 Base64 字段、核对 Data URL 载荷、或在纯文本通道临时传递短配置时可用。不要用它「加密」密码。密钥与会话 Cookie 即使本地不上传,截图与共享屏幕仍会泄露,请谨慎粘贴。写 C/C++ 作业需要对照「某一串编码是否对应某段 UTF-8 原文」时,也可以先在本页生成期望值,再把自写编码器的输出贴进来比对,避免只在纸上推 6 bit 边界。
示例
- 编码 ASCII
输入:crazycloudcc 输出:Y3JhenljbG91ZGNj
- 解码回原文
输入:Y3JhenljbG91ZGNj 输出:crazycloudcc
常见错误
- 缺填充 = 或混入换行、空格时,解码可能失败,请先清理空白。
- URL-safe 字母表用 -_ 代替 +/,与标准 Base64 不同;本页按标准表处理。
- 把二进制文件整份贴进文本框会撑爆内存,大文件请用本机命令行。
常见问题
- 这算加密吗?
- 不算。可逆且无需密钥,不能替代 HTTPS 或真正的加密算法。
- 中文乱码怎么办?
- 按 UTF-8 理解文本。若来源是其它编码,先在外部转成 UTF-8 再粘贴。
- 支持文件选择吗?
- 当前界面面向短文本。大文件用本机 base64 / certutil 更合适。
C++20 可用自制表做演示编码(示意)
// 示意:把 3 字节扩成 4 字符;生产请用经过测试的库 #include <cstdint> #include <string> #include <string_view> constexpr std::string_view kTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; // 完整实现需处理长度与 '=' 填充;可在 /playground 逐步补全
完整实现容易在填充边界写错。建议先用本页核对短样例,再把自测向量贴进 Playground 对照。
在 Playground 打开 · 数据只在本地处理:编码结果仅存在于当前页面状态。