服务公告

服务公告 > 数据与安全 > 密码存储的正确姿势:哈希与盐

密码存储的正确姿势:哈希与盐

发布时间:2026-09-12 09:06
## 概念是什么 密码存储的安全底线是绝不存明文,也不存可逆加密的结果。正确姿势是哈希:把密码经过单向运算变成定长摘要,登录时对输入做同样运算再比对。盐是一段随机数据,与密码拼接后再哈希,让相同密码产生不同摘要,每个账号一份。 ## 背后原理 为什么不加密存。加密可逆,密钥泄露即可还原全部密码;哈希不可逆,泄露的库里拿不到原始密码。为什么必须加盐。不加盐时,相同密码哈希结果相同,攻击者预先算好常见密码的对照表即可批量命中;加盐后每条记录的盐不同,对照表失效,只能逐条暴力尝试。为什么用慢哈希。通用哈希运算太快,每秒可尝试海量组合;专为密码设计的慢哈希把单次运算成本提高到毫秒级,暴力破解的时间被拉长数个量级,且有成熟实现可用。 ## 最小实操 新系统直接选用标准密码哈希方案,算法与参数由库托管,自动生成盐与摘要。存量明文或弱哈希密码,在用户下次登录时静默升级为强哈希,无需强推全员改密。比对使用库提供的常量时间比较函数,避免时序侧信道。系统部署在顺云云服务器上时,升级随应用发版滚动完成,不必专门停机。 ## 常见错误 自己拼接哈希流程,细节错误难以察觉。摘要无盐或全局共用一个盐。升级哈希时保留旧格式兼容太久,迁移无限期拖延。密码重置凭证同样按机密对待,泄露等同密码泄露。数据库层面的配合同样重要:密码字段与其他业务字段分表存放,权限最小化,应用账号只授必要的读写。万一发生拖库,攻击者拿到的表越少,可用于撞库的素材就越少,纵深防御的每一层都在缩小最终损失。哈希参数也要定期复评,算力在涨,昨天的强度今天未必够用。