哈希(Hash)是把任意长度输入,通过哈希算法生成固定长度哈希摘要;核心特性:单向不可逆、输入微小变化摘要完全不同、相同输入哈希结果一致。哈希本身不是加密(不能解密还原原文),主要用于完整性校验、防篡改、身份校验、去重,配合盐值、迭代、HMAC 等机制才能落地安全方案。
一、核心安全能力与使用场景
1. 密码存储(最常用)
❌ 错误:直接存明文密码 / 简单 MD5、SHA‑256 裸哈希(彩虹表可破解) ✅ 正确:加盐 + 慢哈希算法(PBKDF2、bcrypt、Argon2id,优先 Argon2id)
每个用户生成独立随机盐值(不要全局统一盐),盐和哈希结果一起存入数据库;
做多次哈希迭代,增加计算成本,抵御暴力破解;
用户登录:拿到用户输入密码,用数据库存储的盐重新计算哈希,对比摘要,永远不存储明文密码。
示例逻辑:
存储:password_hash = Argon2id(用户密码 + 随机盐)
入库:保存 password_hash + salt
校验:Argon2id(输入密码 + salt) == password_hash
2. 数据完整性校验,防篡改
用于文件、报文、数据库记录,确认数据传输 / 存储后没有被篡改。
文件:生成文件哈希值,把哈希摘要放在可信渠道(签名服务器、区块链、离线文档);用户拿到文件后重新计算哈希,对比,不一致说明文件被篡改、中毒、损坏。
例:操作系统镜像下载附带 SHA256 校验值。
接口报文:不直接加密业务内容,计算报文哈希摘要,接收方重新哈希比对,识别中间人篡改。
注意:单纯哈希不能防中间人把【文件 + 哈希值】一起替换,这种场景需要搭配数字签名(对哈希摘要做非对称签名)。
3. HMAC 哈希消息认证码:接口防篡改 + 防伪造
HMAC = 哈希算法 + 密钥,不是简单加盐;双方共享密钥,对消息做 HMAC 计算。
发送方:消息 + 密钥 → HMAC 摘要,把消息 + 摘要发给对方
接收方:使用同一密钥对收到消息计算 HMAC,比对摘要
优势:即使消息被截获,没有密钥无法伪造合法 HMAC 值;广泛用于 API 签名、Webhook 校验。
算法推荐:HMAC‑SHA256 / HMAC‑SHA3‑256;禁止 HMAC‑MD5。
4. 敏感数据指纹化(不存明文,用于比对)
手机号、身份证等敏感信息,不想存储明文,但又需要做匹配去重。
对敏感字段加盐哈希,数据库只存哈希指纹;
incoming 数据同样加盐哈希后再做等值查询;
局限:无法模糊查询,只能精确相等匹配;盐泄露后存在字典爆破风险,高敏感场景建议结合隐私计算。
5. 日志、审计、区块链存证
对原始业务记录计算哈希摘要,将摘要上链或写入不可篡改审计日志。
不存完整原始数据,只存哈希;后续发生纠纷,把原始数据重新计算哈希,和存证哈希比对,证明这份数据在某个时间点已经存在,没有被事后篡改。

二、算法选型(安全红线)
关键区分:
SHA2 系列是快速哈希,适合文件、HMAC;速度太快,不适合直接存密码,攻击者可以 GPU 每秒亿万次爆破。
Argon2/bcrypt/PBKDF2 是慢哈希(密码哈希函数),人为增加算力开销,专门用于口令存储。
三、常见错误实践(避坑)
❌ 不用盐,直接存密码 SHA256 哈希:彩虹表可以批量破解;
❌ 全局固定盐:盐泄露,全部用户哈希可批量爆破;必须每个用户独立随机盐;
❌ 使用 MD5/SHA1 做安全校验;
❌ 把普通 SHA256 哈希当做加密:哈希不能解密,无法还原原始数据;
❌ 使用 HMAC 时密钥随报文一起传输:密钥必须双方离线安全共享,不能走网络;
❌ 只校验哈希值,哈希值本身通过同一不安全通道传输:中间人可以同时替换文件 + 哈希,此时哈希校验失效,需要数字签名保护哈希摘要。

四、典型落地架构举例
用户密码存储:用户注册,生成 16 字节随机盐,Argon2id 计算哈希,盐 + 哈希存入数据库;登录重新计算比对。
对外 API 接口安全:请求参数排序,拼接时间戳 + 随机 nonce,使用服务端密钥计算 HMAC‑SHA256 作为签名;服务端校验签名 + 时间戳防重放攻击。
文件分发系统:服务端计算文件 SHA3‑256,用私钥对哈希摘要签名;客户端下载文件,计算本地哈希,用公钥验签,同时校验完整性 + 防篡改。
数据存证:业务数据产生,计算 SHA256 摘要,把摘要写入区块链;事后溯源时提交原始数据,重算哈希与链上比对,证明数据未篡改。
五、哈希的局限性
哈希不能加密数据,不能还原原文;需要机密性要搭配对称 / 非对称加密;
短输入(简单密码)即使加盐哈希,依然可以暴力穷举,所以口令哈希必须慢算法;
哈希只能证明 “两份数据是否一致”,不能证明数据本身真实,需要业务逻辑、签名机制配合。
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢