关于MD5/SHA 哈希计算
哈希(Hash)函数能将任意长度的输入数据映射为固定长度的摘要值,相同输入始终产生相同输出,而不同输入几乎不可能产生相同输出(即抗碰撞性)。常见的哈希算法包括 MD5(128 位)、SHA-1(160 位)、SHA-256(256 位)、SHA-384、SHA-512 等,分别适用于不同的安全等级与性能需求场景。
在开发中,哈希算法被广泛应用于数据完整性校验、文件指纹、密码存储、数字签名、区块链、内容寻址(如 Git)等场景。MD5 与 SHA-1 已被发现存在碰撞漏洞,不再适合安全场景,但仍可用于非安全用途;SHA-256 是当前推荐的安全哈希算法,被 HTTPS、区块链、JWT 等广泛采用。
本哈希计算工具基于浏览器原生 Web Crypto API(crypto.subtle.digest)实现 SHA 系列(SHA-1、SHA-256、SHA-384、SHA-512),MD5 基于 JavaScript 实现,一次性输出多种算法的哈希值,方便对比与选择。所有计算在浏览器本地完成,敏感数据不离开您的设备。
核心特性
一次算多种算法
粘贴文本即可同时获得 MD5、SHA-1、SHA-256、SHA-384、SHA-512 多种哈希值,无需切换工具。
Web Crypto 原生加速
SHA 系列基于浏览器原生 crypto.subtle API 实现,硬件加速,性能远超纯 JavaScript 实现。
Unicode 完整支持
通过 TextEncoder 以 UTF-8 编码处理输入,对中文、Emoji 等多字节字符计算结果与主流库一致。
多行批量处理
支持一次性输入多行文本,分别计算每行的哈希值,方便批量处理。
本地处理零上传
所有哈希计算在浏览器内完成,包含密码、密钥等敏感文本可放心处理。
使用场景
校验文件下载完整性
下载大文件后,对比官方提供的 SHA-256 值与本机计算的哈希值,确保文件未被篡改或下载损坏。
生成内容指纹
为文档、代码、配置文件等内容生成唯一哈希指纹,用于去重、版本比对或唯一标识。
安全场景开发参考
实现 JWT 签名、HMAC 消息认证、区块链应用时,使用本工具快速验证哈希计算结果是否符合预期。
缓存键计算
在前端缓存或 CDN 配置中,常用 URL 或参数的 MD5 作为缓存键,避免特殊字符冲突。
常见问题
MD5 安全吗?能用来存储密码吗?
不安全。MD5 已被证明存在严重碰撞漏洞,不适合用于密码存储、数字签名等安全场景。密码存储请使用 bcrypt、scrypt、Argon2 等专用密码哈希算法,并配合盐值(salt)。
哈希能解密还原原文吗?
不能。哈希是单向函数,无法从哈希值反推出原文。网络上所谓的"MD5 解密"网站实际是通过预先计算的彩虹表(rainbow table)进行碰撞查询,对复杂或加盐的输入无能为力。
为什么我对同一字符串算出的哈希与别的工具不一致?
通常是因为字符编码不一致。本工具使用 UTF-8 编码处理输入,主流工具(如 OpenSSL、Python hashlib)也默认 UTF-8。如果输入包含中文,请确认对方工具也使用 UTF-8 编码。
SHA-256 比 MD5 安全多少?
SHA-256 输出 256 位,MD5 输出 128 位,理论抗碰撞能力差距为 2^128 倍。MD5 已被证明可在普通笔记本上数秒内构造碰撞,而 SHA-256 目前没有任何实际可行的碰撞攻击方法。安全场景必须使用 SHA-256。