Loading...
Loading...
免费的在线哈希生成器——即时计算 MD5、SHA-1、SHA-256、SHA-384、SHA-512 哈希值。使用 Web Crypto 安全计算。
密码哈希函数是一种确定性算法,接收任意大小的输入(消息)并产生固定大小的输出(哈希值或摘要)。哈希函数是现代计算的基础——用于密码存储、数据完整性验证、数字签名、文件指纹识别和区块链技术。
MD5(消息摘要算法 5)产生 128 位(32 字符)哈希。它曾广泛使用,但现在被认为在密码学上已被攻破——碰撞攻击可以从不同输入产生相同 MD5 哈希。MD5 不应用于安全目的,但仍在非安全校验和(如文件完整性校验)中有用。
SHA-1 产生 160 位(40 字符)哈希。与 MD5 一样,SHA-1 因碰撞攻击已被弃用(2017 年的 SHAttered 攻击证明了这一点)。现代系统应使用 SHA-256 或 SHA-512,它们属于 SHA-2 家族,在所有实际用途中仍然安全。
SHA-256 产生 256 位(64 字符)哈希,是当前的行业标准。用于 TLS/SSL 证书、区块链(比特币)、代码签名和大多数安全敏感应用。SHA-512 提供更强的安全性,产生 512 位(128 字符)输出,且在 64 位处理器上速度更快。
选择正确的哈希:安全用途(文件完整性、签名)使用 SHA-256 或 SHA-512。MD5 或 SHA-1 仅用于非安全目的(去重、非关键校验和)。密码存储绝不使用普通哈希——始终使用密码哈希函数如 bcrypt、argon2 或 scrypt 加盐。
哈希函数也是哈希表、哈希映射等基础数据结构的核心——哈希值决定元素存储在哪个桶中。对于这种用途,速度比密码安全性更重要。MurmurHash、CityHash 和 xxHash 等非加密哈希更受青睐。它们比 SHA-256 快数个数量级,同时提供优秀的分布特性,使其成为布隆过滤器、分布式缓存和内存数据结构的理想选择。
安全方面——不能;非安全校验和——可以。MD5 在密码学上已被攻破,攻击者可故意制造碰撞。但用于检查意外文件损坏或数据完整性(非恶意攻击)时,MD5 仍然可用。
SHA-256 产生 256 位哈希(64 字符),128 位抗碰撞性。SHA-512 产生 512 位哈希(128 字符),256 位抗碰撞性。SHA-512 在 64 位处理器上实际更快,但占用更多带宽。两者目前都安全。
不能。哈希函数是单向的。唯一「逆向」哈希的方法是暴力破解(尝试所有可能输入)或使用彩虹表(预计算哈希数据库)。这就是密码哈希需要慢速算法和加盐来防止此类攻击的原因。
当两个不同的输入产生相同的哈希输出时,就会发生哈希碰撞。对于加密哈希,碰撞在计算上必须不可行——MD5 和 SHA-1 已被攻破,因为存在实际的碰撞攻击。对于哈希表等非加密用途,碰撞是预期内的,通过链地址法或开放寻址法处理,但最小化碰撞概率对性能仍然至关重要。
HMAC(基于哈希的消息认证码)将哈希函数与密钥结合。与对相同输入总是产生相同输出的普通哈希不同,HMAC 需要密钥来生成和验证输出。HMAC 用于 API 认证、webhook 验证和消息完整性检查,要求双方共享密钥。