哈希与加密完全指南:MD5、SHA256、AES 的正确用法
加密编码(更新于 2026年5月25日)
哈希 vs 加密:关键区别
| 哈希 (Hash) | 加密 (Encryption) | |
|---|---|---|
| 可逆性 | ❌ 不可逆 | ✅ 可解密 |
| 用途 | 完整性校验、指纹 | 保密传输 |
| 密钥 | 不需要 | 需要密钥 |
| 示例 | MD5、SHA256 | AES、RSA |
常见误区:「MD5 加密密码」—— MD5 是哈希不是加密,且已不安全。
哈希算法
MD5
- 输出:128 位 (32 十六进制字符)
- 速度:极快
- 安全性:❌ 已碰撞,不应用于安全场景
- 适用:文件完整性快速校验(非安全)
使用 MD5 工具 计算文件或文本的 MD5 值。
SHA 系列
| 算法 | 输出长度 | 安全性 | 适用 |
|---|---|---|---|
| SHA-1 | 160 位 | ❌ 已碰撞 | 遗留系统 |
| SHA-256 | 256 位 | ✅ 安全 | 推荐使用 |
| SHA-512 | 512 位 | ✅ 安全 | 高安全需求 |
使用 SHA256 工具 计算 SHA-256 哈希。
HMAC
哈希 + 密钥 = 消息认证码。既验证完整性,又验证来源:
HMAC-SHA256(message, secret_key) → 认证哈希
使用 HMAC 工具 计算 HMAC 值。
加密算法
AES(对称加密)
同一个密钥加密和解密:
| 模式 | 特点 | 推荐 |
|---|---|---|
| AES-128-CBC | 经典模式 | 一般用途 |
| AES-256-GCM | 认证加密 | 推荐 |
| AES-256-CTR | 流式加密 | 大文件 |
使用 AES 加密工具 进行 AES 加解密。
何时用哈希 vs 加密
文件下载校验 → SHA256 哈希对比
密码存储 → bcrypt/argon2(不是 MD5!)
API 签名 → HMAC-SHA256
数据传输 → AES-256-GCM 加密
常见误用与正确做法
| 误用 | 问题 | 正确做法 |
|---|---|---|
| MD5 存储密码 | 彩虹表秒破 | bcrypt/argon2 + salt |
| SHA256 存储密码 | 太快,易暴力破解 | 专用密码哈希函数 |
| 硬编码 AES 密钥 | 源码泄露 = 密钥泄露 | 环境变量 / KMS |
| ECB 模式加密 | 相同明文 = 相同密文 | 使用 CBC/GCM 模式 |
| 哈希 = 加密 | 概念混淆 | 需要解密用 AES |
工具库加密工具链
全部基于 Web Crypto API,浏览器本地处理:
总结
理解哈希与加密的本质区别,选择正确的算法和模式,是信息安全的基本功。工具库提供完整的加密工具链,全部在浏览器本地运行,适合开发调试和学习——但生产环境请使用经过审计的密码学库。
#哈希#加密#MD5#SHA256#AES#安全