哈希与加密的区别
哈希是单向指纹:同样的输入总是产生同样长度的固定输出,但无法反向还原出原始内容。加密是双向的——用密钥加密的数据可以用正确的密钥解密。凡是永远不需要还原原始内容的地方,都会用到哈希:校验和、完整性检查与密码验证。
应该用哪个算法?
- SHA-256 / SHA-512——现代、安全的首选。用于校验和、文件完整性以及任何新项目。大多数下载页面公布的就是 SHA-256。
- MD5 / SHA-1——安全上已被攻破:两者都已被证明存在碰撞攻击(MD5 于 2004 年,SHA-1 于 2017 年),所以绝不要用在可能面临攻击者的场景——不能用于密码或签名。它们仍可用于非对抗性的校验和:去重、缓存键、发现意外损坏。
- HMAC——带密钥的哈希:同一算法外加一个密钥。共享密钥的双方可以验证消息未被篡改或伪造。API 请求签名和 Webhook 验证用的就是它。
密码需要加盐与慢速哈希
绝不要以明文 MD5/SHA 哈希存储密码——未加盐的快速哈希几秒钟就会被彩虹表破解。密码存储需要使用带盐的慢速哈希算法,如 bcrypt、scrypt 或 argon2。本工具用于校验和与开发任务,不适合存储凭据。
校验下载文件
把下载的文件拖到上方,将其 SHA-256 与发布方公布的校验和比对。如果一致,说明文件与发布内容逐字节相同——任何细微改动都会让哈希完全改变。