tomai
登录

Hash 函数对比:MD5、SHA-1、SHA-256 与 CRC32

Hash 函数把任意输入压缩成固定长度的指纹:同一个文件永远得到同一个字符串,改动一个字节就会雪崩成完全不同的串。这一个特性服务于三种完全不同的任务——发现损坏、内容指纹,以及配合额外机制保护密码。

1. 文件校验:MD5、SHA-1、SHA-256

下载页公布校验和,就是让你确认文件完整到达:对自己的副本算一次 Hash,比对字符串。MD5 最快,查意外损坏完全够用,SHA-1 居中,SHA-256 是重要场合的当前默认。只有 GB 级大文件才感觉得到速度差别。

2. 安全上已失效,完整性上没问题

MD5 和 SHA-1 在蓄意攻击者面前已经碎了——研究者能造出 MD5 相同的两个不同文件,SHA-1 几年前也被实际攻破。所以签名、证书、密码存储一律不能用它们;但你的 Linux ISO 下载包里不会藏着攻击者,纯查损坏它们依然完全称职。

3. 密码要慢,不要快

快速 Hash 是存密码的错误工具,因为攻击者每秒能试几十亿次。真正的密码存储用又慢又加盐又吃内存的专用函数。如果某篇教程教你存密码的 MD5,关掉那篇教程。

4. CRC32 与 HMAC,简单说

CRC32 根本不是密码学 Hash——它是网络和 ZIP 文件里的快速检错码,查传输抖动很在行,防伪造毫无用处。HMAC 则把密钥混进 Hash,让接收方同时验证完整性和真实性。用 our hash generator 对自己的文本或文件亲手试一遍这些算法,全部在浏览器本地计算。