766113 工具箱
Hash

哈希校验适合确认完整性,不适合隐藏秘密

MD5、SHA-1、SHA-256 这些词经常出现在下载页和接口签名里,但它们的用途并不相同。

哈希函数会把任意长度输入变成固定长度摘要。下载镜像后计算 SHA-256,可以判断文件是否和发布者给出的摘要一致。这个过程关注的是完整性:文件有没有传坏,内容有没有变。

哈希不是加密。加密意味着知道密钥的人可以解密还原;哈希通常不能还原原文。可是不能还原不代表安全。短密码、手机号、常见字符串的哈希值可以被字典或彩虹表快速匹配,所以密码存储需要使用专门的密码哈希算法和 salt。

签名又是另一回事。签名不仅关心内容有没有变,还关心是谁签的。软件包、Webhook 和支付回调通常需要 HMAC 或非对称签名来验证来源。

选型提醒