> 哈希 | 校验和 | 验证 <
// 用于校验和、数据完整性验证和指纹识别的MD5哈希生成器
本地处理
100%客户端MD5哈希处理。您的数据永远不会离开浏览器。
即时哈希
输入时实时生成MD5哈希。无需服务器通信。
多种格式
以十六进制或Base64格式输出。可即时切换格式。
// 关于MD5哈希
MD5工作原理:
MD5(消息摘要算法5)通过Merkle-Damgard结构的一系列位运算处理输入数据。它生成128位(16字节)的哈希值,通常表示为32个字符的十六进制字符串。
示例:
"Hello" → 8b1a9953c4611296a827abf8c47804d7
常见用途:
- >文件完整性验证和校验和
- >数据去重和指纹识别
- >缓存键生成
- >非安全相关的哈希表索引
- >遗留系统兼容性
>> 常见问题
问:什么是MD5哈希?
答:MD5(消息摘要算法5)是一种广泛使用的哈希函数,可生成128位哈希值。它接受任何输入并生成固定大小的32个字符的十六进制字符串,通常用于校验和及数据完整性验证。
问:MD5对密码安全吗?
答:不安全,MD5不推荐用于密码哈希或安全关键型应用。它容易受到碰撞攻击和彩虹表攻击。密码请使用bcrypt、scrypt或Argon2,加密需求请使用SHA-256或SHA-3。
问:MD5哈希可以被逆向吗?
答:不可以,MD5是单向哈希函数。从数学上来说,将MD5哈希逆向还原为原始输入是不可行的。但是,常见输入可以通过查找表找到,因此MD5不适合安全用途。
问:MD5还有什么用途?
答:MD5在非安全相关用途中仍然有用,例如文件完整性检查、数据去重、缓存键生成以及不需要碰撞抗性的校验和验证。
问:MD5与SHA-256相比如何?
答:MD5生成128位哈希(32个十六进制字符),而SHA-256生成256位哈希(64个十六进制字符)。SHA-256具有加密安全性和碰撞抗性,适用于MD5不适合的安全应用。
// 常见的 MD5 值
| 输入 | MD5 |
|---|---|
| "" | d41d8cd98f00b204e9800998ecf8427e |
| abc | 900150983cd24fb0d6963f7d28e17f72 |
| hello | 5d41402abc4b2a76b9719d911017c592 |
| The quick brown fox jumps over the lazy dog | 9e107d9d372bb6826bd81d3542a419d6 |
// 计算文件校验和
Linux md5sum file.zip
macOS md5 file.zip
Windows certutil -hashfile file.zip MD5
PowerShell Get-FileHash file.zip -Algorithm MD5
OpenSSL openssl md5 file.zip
Python hashlib.md5(data).hexdigest()
Node.js crypto.createHash('md5').update(data).digest('hex')
>> 更多问题
问:如何用 MD5 校验和验证文件?
答:计算下载文件的 MD5 哈希(例如用 md5sum),与发布的值逐字符比对。一致说明文件没有意外损坏。MD5 无法防御恶意篡改,此时请使用 SHA-256 或签名。
问:为什么 MD5 输出总是 32 个十六进制字符?
答:MD5 始终输出 128 位。每个十六进制字符代表 4 位,所以正好是 32 个字符,无论输入是 1 字节还是 1 GB。
问:存储密码时应该用什么代替 MD5?
答:使用缓慢且带盐的密码哈希,如 Argon2id、bcrypt、scrypt 或 PBKDF2。它们故意计算开销大,让暴力破解代价高昂;而 MD5 这类快速哈希每秒可计算数十亿次。