上传文件
  1. base64hub
  2. 密钥与哈希
  3. Base64 形式的 MD5 哈希

MD5 转 Base64

拖入文件或输入文本,即可得到 24 个字符的 Base64 MD5 摘要,这正是 Content-MD5 请求头和云存储 API 需要的形式,同时还有熟悉的 32 字符 hex。

免费 无需注册,不限次数 本地 不上传任何内容 大文件 MD5 以 8 MB 分块流式计算 更新于 2026年10月27日

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何得到 Base64 形式的 MD5 哈希

  1. 算法 中已预选 MD5。
  2. 处理文件时,把 输入 切换为 文件 并拖入文件,也可以一次拖入多个,每个文件单独出结果。超过 200 MB 的文件会以 8 MB 分块读取,并显示进度百分比。
  3. 处理文本时,输入 保持为 文本,直接输入或粘贴。输入格式 可以让你把 hex 或 Base64 数据当作原始字节计算哈希,而不是当作 UTF-8 文本。
  4. 用于请求头和 API 时复制 Base64 值,与 md5sum 的输出对比时复制 Hex。两者描述的是同样的 16 个字节。

工具会简短提示 MD5 不适合用于安全用途。这个提示是对的,但不影响校验和的计算。

Hex 还是 Base64:同样的 16 个字节

输入MD5(hex)MD5(Base64)
空d41d8cd98f00b204e9800998ecf8427e1B2M2Y8AsgTpgAmY7PhCfg==
hello5d41402abc4b2a76b9719d911017c592XUFAKrxLKna5cZ2REBfFkg==
The quick brown fox jumps over the lazy dog9e107d9d372bb6826bd81d3542a419d6nhB9nTcrtoJr2B01QqQZ1g==

使用 Content-MD5 时最常见的错误,是对 hex 文本做 Base64 编码。对于狐狸那句话,这样会得到 OWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDY=,44 个字符,没有哪个服务器会接受。看长度就一目了然:24 个字符是对的,44 个说明错把 hex 编码了。

哪些地方需要 Base64 MD5

  • Content-MD5 请求头(RFC 1864)。Amazon S3 会在上传时检查它,Azure Blob Storage 也会,请求体不匹配时返回错误。
  • Google Cloud Storage 以 Base64 报告对象的 md5Hash,gsutil hash 也打印 Base64,除非传入 -h 改为 hex。
  • Azure Blob 属性 同样以 Base64 存储 Content-MD5。
  • 较老的 API 和邮件系统,它们在基于 SHA 的校验和出现之前就采用了这个请求头。

其他地方仍然使用 hex:md5sum 和大多数下载页面,以及单段上传的 S3 对象的 ETag,它就是带引号的 hex MD5。分段上传的 S3 ETag 以 - 加分段数结尾,根本不是整个文件的 MD5,所以永远不会与本工具的结果一致。

在命令行和代码中把 MD5 转为 Base64

openssl md5 -binary file.bin | base64
md5sum file.bin | cut -d' ' -f1 | xxd -r -p | base64
import base64, hashlib

with open("file.bin", "rb") as f:
    digest = hashlib.file_digest(f, "md5").digest()
print(base64.b64encode(digest).decode())

hashlib.file_digest 需要 Python 3.11 或更高版本;更早的版本请分块读取文件并调用 update()。在 Node.js 中,crypto.createHash("md5").update(buffer).digest("base64") 直接给出 Base64 形式。如果较新的 API 提供 SHA-256 校验和,请优先使用它;SHA-256 转 Base64 以同样的方式生成这些值。更多代码片段见 OpenSSL 和 Python 页面。

常见问题

Content-MD5 请求头是什么?

RFC 1864 定义的一个 HTTP 请求头,内容是请求体 16 字节 MD5 摘要的 Base64。Amazon S3 和 Azure Blob Storage 等存储服务用它来拒绝传输过程中损坏的上传。

为什么我的 Base64 MD5 有 44 个字符?

你编码的是 32 字符的 hex 字符串,而不是 16 个原始字节。正确的 Base64 MD5 总是 24 个字符,并以 == 结尾。编码前请以二进制形式输出哈希(OpenSSL 用 -binary,Python 用 .digest())。

怎样把 MD5 的 hex 校验和转为 Base64?

把 hex 解码为字节,再做 Base64 编码:9e107d9d372bb6826bd81d3542a419d6 会变成 nhB9nTcrtoJr2B01QqQZ1g==。Hex 转 Base64 转换器粘贴一次即可完成。

MD5 现在还安全吗?

用来发现意外损坏,没问题。用在攻击者可能干预的任何地方,不行:一台笔记本电脑就能制造 MD5 碰撞,两个不同的文件可以有相同的哈希。防篡改的完整性校验请用 SHA-256,密码请用 Argon2 或 bcrypt 等密码哈希。