编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 编码解码 / Base64编解码

Base64编解码

Base64 编码和解码。

输入
结果

这个工具能做什么

这个工具做的事很直接:把一段文本编码成 Base64 字符串,或者把一段 Base64 解码还原成原文,两个方向都在浏览器里即时完成。日常开发中你经常会拿到一串形如 5L2g5aW9 的字符,肉眼根本看不出是什么内容,或者反过来需要把中文、JSON、密钥之类的数据塞进只允许 ASCII 的地方,手写转换既慢又容易错。中文这里尤其容易踩坑,因为一个汉字在 UTF-8 下占三个字节,编码前必须先确定字节序列,本工具统一按 UTF-8 处理,中文编码解码不会出乱码。所有转换都在本地完成,不上传到服务器。

原理上,Base64 是一种把二进制数据表示成可打印 ASCII 字符的编码方式,注意它是编码而不是加密。它把输入按每 3 个字节(24 位)一组切分,再把这 24 位重新按每 6 位一段拆成 4 段,每段的值落在 0 到 63 之间,对应到一张固定的 64 字符表上,也就是 A-Z、a-z、0-9 再加 + 和 / 这 64 个符号。当原始字节数不是 3 的整数倍时,末尾用一到两个等号 = 补齐,这就是很多 Base64 串结尾带 = 的原因。因为 3 字节变成了 4 字符,编码后的体积会比原文膨胀大约三分之一。对中文来说,工具先用 UTF-8 把字符转成字节流,再走上面这套编码,解码时按相反顺序还原,所以能保证中文往返一致。

典型场景集中在数据传输和嵌入两类。传参时,URL 或 JSON 里不方便直接放的特殊字符、换行、二进制片段,先 Base64 编码成一行纯文本就能安全携带,例如把一小段配置或签名放进 query string;HTTP 的 Basic 认证头 Authorization: Basic 后面跟的就是 用户名:密码 的 Base64。嵌入时最常见的是 Data URI,把一张小图标编码成 data:image/png;base64,... 直接写进 CSS 或 HTML,省掉一次网络请求。此外调试 JWT 时,它的 header 和 payload 两段都是 Base64URL 编码的 JSON,拿这个工具解码就能直接看到里面的 iss、exp 等字段,核对令牌内容非常方便。

有几个常见误区值得说清楚。第一,Base64 不是加密也不是哈希,任何人拿到密文都能解回原文,千万别用它来保护密码或敏感信息,它只负责把数据变成可传输的文本形态。第二,标准 Base64 用到的 + 和 / 在 URL 里有特殊含义,所以出现了 Base64URL 变体,把这两个字符换成 - 和 _ 并常常省略结尾的 =,如果你在解码 JWT 或 URL 参数时报错,多半是两种字母表混用导致的。第三,有些系统会在每 76 个字符插入换行(如 MIME 邮件),解码前需要先去掉这些空白。只要输入本身是合法的 Base64,解码就是无损的,还原出的字节和原文完全一致。

Base64编解码是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“base64编码”、“base64解码”、“base64在线”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

Base64 编码算加密吗,能用来存密码吗?
不算。Base64 只是把数据换一种可打印字符的表示形式,是可逆的公开编码,任何人都能直接解回原文,所以绝不能拿它保护密码或密钥。真正需要保密要用 AES 等加密算法,需要防篡改校验要用哈希。
为什么中文编码后再解码不会乱码?
因为工具统一先用 UTF-8 把中文转成字节序列再做 Base64,解码时按相同规则还原。只要编码和解码两端都按 UTF-8 处理,中文往返就一致;乱码通常出现在一端用了 GBK 之类的其他字符集。
编码结果末尾的等号 = 是什么,可以去掉吗?
= 是补位符,当原始字节数不是 3 的倍数时用来补齐到 4 字符一组,一个或两个都可能出现。标准 Base64 需要保留它才能正确解码;Base64URL 变体允许省略,解码方按长度自行补回。
解码时报错或结果乱码,一般是什么原因?
最常见是把 Base64URL 当成标准 Base64(- _ 与 + / 混用),或者字符串里混入了换行、空格等空白字符。另外长度不对、被截断、补位等号缺失也会导致失败,先检查这几点即可。
标准 Base64 和 Base64URL 有什么区别?
字母表不同:标准版用 + 和 /,URL 版把它们替换为 - 和 _,避免在 URL 和文件名中被转义,并且常省略结尾的 =。JWT、URL 参数多用 URL 变体,两者不能直接互相解码。

相关工具

查看全部「编码解码」工具 →

相关名词解释