MD5 是一种哈希(散列)算法,把任意长度的数据计算成固定 128 位(16 字节)的摘要,通常写成 32 位十六进制字符串。下面重点说明库与写法。
MD5常见实现方式
- 打开本站MD5计算器,在输入框粘贴文本
- 选择 MD5 算法(可选 32 位或 16 位、大写或小写)
- 复制结果,与对方提供的值逐位比较
# Linux
echo -n "abc" | md5sum
md5sum file.iso
# macOS
md5 -s "abc"
# Windows
certutil -hashfile file.iso MD5import hashlib
hashlib.md5("abc".encode("utf-8")).hexdigest()
# 900150983cd24fb0d6963f7d28e17f72
h = hashlib.md5()
with open("file.iso", "rb") as f:
for chunk in iter(lambda: f.read(1 << 20), b""):
h.update(chunk)
print(h.hexdigest())
示例
输入:<b>粗体</b>
计算结果:b0335f51ad2b1c8d2a27f2c45988b9bd
说明:对 UTF-8 字节计算 MD5。
规则说明
- 输入是字节:同一段中文按 UTF-8 和 GBK 计算,结果不同
- 输出通常用小写十六进制表示,大小写不影响比较
- 也可以用 Base64 表示(16 字节编码为 24 个字符)
- 比较两个摘要时应使用常量时间比较函数,防止时序攻击
JavaScript 示例
下面是 JavaScript 中处理MD5的常用写法:
// Node.js
const crypto = require("crypto");
crypto.createHash("md5").update("abc", "utf8").digest("hex");
// 900150983cd24fb0d6963f7d28e17f72
// 浏览器的 Web Crypto 不支持 MD5,需要使用第三方库(如 spark-md5)运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的MD5计算器工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【MD5 是多少位?】128 位,即 16 字节,写成十六进制是 32 个字符。
【同一个文本为什么算出的 MD5 不一样?】通常是输入字节不同:字符集不同、末尾多了换行或空格、全角半角不同。
【MD5 还安全吗?】已不安全,只适合校验意外损坏,不能用于签名和密码存储。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。