输入需加密的文本
SHA / MD5 加密结果 (Hex)
使用说明与 SHA 知识点
什么是 SHA?它和 MD5 有什么区别?
- 定义:SHA (Secure Hash Algorithm,安全散列算法) 是由美国国家安全局 (NSA) 设计的一系列密码散列函数。
- 单向不可逆:与 MD5 类似,SHA 也是单向散列算法(提取指纹),无法通过密文还原出明文(非对称加密是 RSA 等,不要混淆)。
- 与 MD5 的对比:MD5 的碰撞风险已被证实(即两份不同的文件可能生成相同的 MD5 值),而 SHA 家族(特别是 SHA-256 及以上)的安全性远高于 MD5,因此在数字签名、SSL 证书、区块链中,SHA 已经全面取代 MD5 成为行业标准。
SHA 家族版本演进
- SHA-1:生成 160 位(40 个十六进制字符)的哈希值。由于 2017 年已被 Google 等机构成功攻破产生碰撞,目前已不再安全,不推荐在新的安全系统中使用。
- SHA-2 家族 (包含 SHA-224, SHA-256, SHA-384, SHA-512):这是目前最主流、最广泛使用的版本。其中:
SHA-256:生成 64 字符的哈希值。是比特币挖矿算法的基础,也是大多数 Web API 签名、密码存储的首选。SHA-512:生成 128 字符的哈希值。安全性更高,适用于对安全性要求极高的金融或军工级数据校验。
- SHA-3:最新的哈希标准,内部结构与 SHA-1 / SHA-2 完全不同(采用了海绵结构),主要用于防范未来可能出现的针对 SHA-2 算法的未知攻击。
🔑 什么是 HMAC?
- 定义:HMAC (Hash-based Message Authentication Code) 是一种基于密钥的哈希算法。它结合了哈希算法(如 MD5、SHA-256)和一个额外的密钥(Secret Key)。
- 作用:普通的哈希只能验证数据是否被篡改,而 HMAC 不仅能验证数据完整性,还能验证发送者的身份(因为只有拥有密钥的人才能生成正确的 HMAC 值)。
- 应用场景:广泛应用于 JWT (JSON Web Token) 的签名验证、微信支付/支付宝 API 签名、OAuth 身份认证等场景。
应用场景
- 密码存储:网站数据库中保存的用户密码(通常还会加上 Salt 盐值再进行 SHA-256 加密)。
- 文件校验:大型软件(如系统镜像、游戏客户端)下载后,校验 SHA-256 值以确保文件未被篡改或植入木马。
- 数字签名与防篡改:各种开放平台 API 接口通信时,将请求参数加上 Secret Key 后进行 SHA 签名,防止中间人篡改数据。
