Base64 是什么?编码原理与在线转换方法

接口文档里看到一串 aGVsbG8gd29ybGQ=,图片的 data URL 以 data:image/png;base64, 开头,邮件附件里躺着大段看不懂的字符——这些都是 Base64。它无处不在,但很多人误以为它是加密。

本文用大白话讲清:Base64 是什么、为什么需要它、怎么手动换算,文末有支持中文的免费转换工具。

一句话:Base64 不是加密,是「翻译」

加密需要密钥,没有密钥解不开;Base64 的规则是公开的,任何人拿到编码后的字符串都能解回去。它做的事情只有一个:把任意二进制数据「翻译」成 64 个可打印字符(A-Z、a-z、0-9、+、/),外加 = 补位。

为什么需要翻译?因为很多只认文本的场合传不了二进制:早期的邮件系统、URL 参数、JSON 接口、HTML 里的内嵌图片。Base64 就是二进制在这些场合的「普通话」。

原理:3 个字节变 4 个字符

二进制数据每 3 个字节(24 位)为一组,切成 4 个 6 位的小块,每个小块对应编码表中的一个字符。3 字节变 4 字符,所以体积膨胀约 33%。

举个具体例子:hello 是 5 个字节。先取前 3 个字节 hel → 编码成 aGVs,再取剩下 2 个字节 lo → 编码成 bG8=(不足 3 字节用 = 补位)。连起来就是 aGVsbG8=。解码就是反向操作。

中文呢?中文先按 UTF-8 编成字节(一个汉字 3 字节),再整体做 Base64。所以「你好」编码后是 5L2g5aW9,比英文长得多——这是 UTF-8 的字节数决定的,不是工具 bug。

💡 不想看文字?直接动手试试
打开免费的「Base64 编解码」工具,本地处理、不用注册。
免费使用Base64 编解码 →

Base64 的典型用途

一是 data URL:<img src="data:image/png;base64,iVBOR..."> 把小图标直接嵌进 HTML/CSS,省一次 HTTP 请求。二是 HTTP Basic 认证:Authorization 头里的用户名密码就是 Base64(注意:只是编码不算加密,必须配合 HTTPS)。三是接口传文件:JSON 传不了二进制,小文件转 Base64 塞进 JSON 是常见做法。

  1. 确定方向:原文转 Base64 选「编码」,Base64 转原文选「解码」。
  2. 粘贴内容到输入框(中文直接粘贴,工具会自动按 UTF-8 处理)。
  3. 点击转换,检查输出框结果。
  4. 解码时如果报错,先检查字符串里有没有多余的空格、换行或中文标点。

新手常踩的两个坑

坑一:把 Base64 当加密用。token、密码用 Base64「加密」后放在前端,等于裸奔——任何人打开控制台就能解。需要保密请用真正的加密(如 AES)或直接走 HTTPS。坑二:中文乱码。用了不支持 UTF-8 的老工具,中文编码后解出来是乱码。转换工具一定要选明确支持 UTF-8 的,比如快工具箱的 Base64 工具,编码解码全程按 UTF-8 处理。

常见问题

Base64 是加密吗?安全吗?
完全不是。Base64 是编码(encoding),规则公开,任何人都能解码,没有密钥的概念。不要用它「加密」密码、token 等敏感信息,那等于明文。
为什么编码后全是字母数字和 +/=?
因为编码表里只有 A-Z、a-z、0-9、+、/ 和 =,全是可打印字符,不会有乱码、换行等捣乱的字符。这是它被发明的根本原因。
拿到一段 Base64,怎么变回原文?
选择解码模式再转换一次即可。注意 Base64 字符串里不能有多余空格换行,有的话先去掉。
Base64 会让数据变大吗?
会。Base64 的体积固定膨胀约 33%(3 字节变 4 字符)。传大文件时要考虑这个 overhead,或者直接用二进制传输。

相关教程

相关工具