MD5 / SHA 哈希算法对照表

MD5、SHA-1、SHA-256、SHA-384、SHA-512、SHA-3、CRC32 的输出长度、典型用途与安全现状一次看清。

这张表把常见哈希算法放在一起横向对比,四列分别是:算法名称、输出长度、典型用途、安全现状。选算法、判断一串哈希值属于哪种算法、或者想确认某个老算法还能不能用,都可以先查这张表。表里只收公认、稳定的结论,把握不准的算法一律不收。

输出长度怎么换算成十六进制位数

哈希值通常用十六进制显示,位数由算法决定:输出的比特数除以 4,就是十六进制字符数。所以 128 位是 32 个字符,160 位是 40 个,256 位是 64 个,384 位是 96 个,512 位是 128 个。记住这条换算,看到一串哈希的长度,就能反推它大概用了哪种算法:32 位多半是 MD5,64 位多半是 SHA-256。

「SHA-2 家族:SHA-224、256、384、512 是什么关系」SHA-2 是一组算法的统称,名字里的数字就是输出比特数:SHA-256 输出 256 位,SHA-384 输出 384 位,SHA-512 输出 512 位,SHA-224 则是为了适配较短输出而设计的 224 位版本。它们算法结构相近,只是输出长度和内部参数不同。日常优先选 SHA-256,需要更高强度就用 SHA-384 或 SHA-512;位数越长越难被暴力破解,代价是计算和存储略多。

MD5 和 SHA-1 为什么被淘汰

MD5 和 SHA-1 都已被证实存在碰撞:能人为构造两份内容不同、哈希值却相同的数据。哈希的作用是给内容一个独一无二的指纹,一旦能造出碰撞,攻击者就可能在不改变哈希的前提下替换内容,签名、证书这类依赖它的机制就不安全了。所以这两种算法在安全场景里应被淘汰,改用 SHA-256 及以上;但在校验文件完整性、判断内容是否重复这类不涉及对抗的场合,它们仍然能用。

CRC32 为什么不算密码学哈希

CRC32 算出的是一段 32 位校验和,主要用来发现数据在传输、存储过程中有没有出错,比如压缩包、网络协议都用到它。它设计的目标是查错快、算得快,而不是抗攻击,所以很容易被刻意构造出相同的值。正因如此,它不属于密码学哈希,不能用来防篡改或做签名,只适合当作一种快速的完整性检查。

SHA-3 是什么,要不要现在就换

SHA-3 是 NIST 通过公开竞赛选出的新一代哈希标准,它和 SHA-2 的内部结构完全不同,因此被认为即使 SHA-2 将来出现问题,SHA-3 也能作为独立的备用方案。目前 SHA-2 仍然安全,日常用 SHA-256 就够了,没有必要急着全换成 SHA-3;但在需要算法多样性的系统里,采用 SHA-3 是合理的加固手段。

该选哪种:按用途对号入座

校验文件是否损坏、判断内容是否重复、给缓存生成键,MD5 或 SHA-256 都可以,追求速度用 MD5、追求稳妥用 SHA-256;数字签名、证书、口令存储,必须用 SHA-256 及以上,绝不能用 MD5 或 SHA-1;只是想发现传输错误,用 CRC32 这类校验和即可,不必动用密码学哈希。先想清楚用途,再挑算法,就不会选错。

常见哈希算法对照

算法输出长度典型用途安全现状
MD5128 位(32 位十六进制)文件校验、内容去重、缓存键已不安全:可人为构造碰撞,不可用于签名、证书、口令
SHA-1160 位(40 位十六进制)早期版本控制、旧版校验已不安全:2017 年被实测碰撞,不可用于安全场景
SHA-224224 位(56 位十六进制)需要较短输出的签名场景安全:SHA-2 家族,输出短于 SHA-256
SHA-256256 位(64 位十六进制)数字签名、证书、口令存储、文件校验目前安全:尚无实用碰撞,推荐广泛使用
SHA-384384 位(96 位十六进制)更高强度的签名与完整性校验安全:SHA-2 家族,强度高于 SHA-256
SHA-512512 位(128 位十六进制)高强度签名、完整性校验安全:SHA-2 家族,输出最长
SHA3-256256 位(64 位十六进制)新一代签名与校验安全:结构与 SHA-2 不同,可作备用选择
SHA3-384384 位(96 位十六进制)新一代高强度校验安全:SHA-3 家族
SHA3-512512 位(128 位十六进制)高强度新一代校验安全:SHA-3 家族,输出最长
CRC3232 位(8 位十六进制)传输错误检测、压缩包校验非密码学哈希:只查错、不防篡改,不能用于安全场景

参考资料

常见问题

MD5 和 SHA-256 该用哪个?

看用途:只是校验文件完整性、去重、做缓存键,用 MD5 或 SHA-256 都行;涉及签名、证书、口令存储等安全场景,必须用 SHA-256 及以上,不能用 MD5。

哈希输出长度里的位数和十六进制字符数怎么对应?

比特数除以 4 就是十六进制字符数。128 位是 32 个字符、160 位是 40 个、256 位是 64 个、384 位是 96 个、512 位是 128 个。

SHA-1 现在还安全吗?
不安全了。SHA-1 在 2017 年被实测出碰撞,数字签名、证书等安全场景不应再使用,应改用 SHA-256 及以上;只有不涉及对抗的旧校验场景才可能还在用。
CRC32 和 MD5 有什么区别?
CRC32 是 32 位校验和,只用来发现传输或存储错误,不抗攻击,不是密码学哈希;MD5 是 128 位哈希,抗碰撞性曾经达标但现在已被攻破。两者用途和性质都不同。
一定要换成 SHA-3 吗?
目前不必。SHA-2(尤其是 SHA-256)仍然安全,日常使用足够。SHA-3 结构与 SHA-2 不同,可作为独立备用方案,在需要算法多样性的系统里采用更稳妥。

需要处理自己的内容?用 MD5/SHA 哈希生成器 即可。 · 最后更新:2026-10-08

本表内容与数据的整理依据见 换算与计算依据,核对流程见 内容审核与更新流程。