MD5 是一种哈希(散列)算法,把任意长度的数据计算成固定 128 位(16 字节)的摘要,通常写成 32 位十六进制字符串。下面重点说明匹配与校验写法。
MD5相关的常用正则表达式
- 匹配 32 位十六进制 MD5 值:^[a-fA-F0-9]{32}$
- 从文本中找出 MD5 值:\b[a-fA-F0-9]{32}\b
不同语言中反斜杠可能需要再转义一次;用于校验时记得加上 ^ 和 $。
示例
输入:a+b=c
计算结果:c6d223eafd71470302a8b78e6d137648
说明:对 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 不一样?】通常是输入字节不同:字符集不同、末尾多了换行或空格、全角半角不同。
【MD5 还安全吗?】已不安全,只适合校验意外损坏,不能用于签名和密码存储。
【空字符串的 MD5 是多少?】d41d8cd98f00b204e9800998ecf8427e。
文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。