中文开发者指南
哈希和加密有什么区别?
对比 hash、encryption、checksum 和 password hashing,说明 SHA-256、MD5、bcrypt、scrypt、Argon2 分别适合什么场景。
核心要点
哈希是单向摘要;加密可以用密钥还原;密码存储需要专门的慢哈希算法,而不是普通 SHA-256。
建议先用脱敏样例理解概念,再把结论带回自己的接口、日志或配置环境中验证。工具输出可以帮助定位问题,但不应替代服务端校验、安全审查或项目上下文判断。
使用前检查
在相关工具里操作前
- 先确认输入是否为脱敏样例,而不是生产密钥、Token、客户数据或密码。
- 先理解字段单位、编码格式或安全边界,再把结果用于接口联调。
- 需要安全判断时,把最终校验放在可信服务端,而不是只依赖浏览器端显示。
1
哈希是单向摘要
哈希函数把输入转换成固定长度摘要,适合完整性校验、内容指纹和快速比较。
它不是加密,因为正常情况下不能从摘要还原原文。
2
加密需要密钥
如果系统未来还需要读取原始数据,就需要加密、密钥管理或其他数据保护方案。
哈希不能替代加密。把敏感数据 hash 一下并不一定安全,尤其是输入可预测时。
3
密码存储是单独问题
不要用普通 MD5、SHA-1 或 SHA-256 直接存密码。密码通常可猜,攻击者可以高速尝试。
生产密码存储应使用 bcrypt、scrypt、Argon2 等专门算法,并配合 salt 和成本参数。
- SHA-256:适合许多完整性校验。
- MD5/SHA-1:遗留场景,不建议新安全设计。
- bcrypt/scrypt/Argon2:密码存储场景。