You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

禁止使用相同或相似旧密码的系统是否会明文存储用户密码?

密码相似度校验的实现逻辑说明

首先你的基础认知是准确的:当前行业存储密码的事实标准确实是加盐慢哈希(主流算法为bcrypt、Argon2、PBKDF2等),目的就是避免任何持久化存储明文密码的场景,加盐操作也确实可以有效防御彩虹表攻击。

以下是各类密码校验规则的常见实现方案,均不需要持久化存储明文密码:

  • 「新密码不得与旧密码完全相同」校验
    修改密码时你首先需要输入当前有效的旧密码完成身份验证,系统会将你输入的旧密码用库中存储的对应盐值做哈希,与已存储的旧哈希值比对确认身份合法性。此时你提交的新密码也会用同一盐值做哈希,直接和旧哈希值比对即可判断是否完全一致。如果是禁止复用最近N次历史密码,只需要存储每个历史密码对应的盐和哈希值,将新密码分别用每个历史盐哈希后和对应历史哈希比对即可,全程无明文需要持久化存储。

  • 「新密码不得与旧密码相似度超过阈值」校验
    最常用的安全实现是在校验瞬时完成明文比对:你输入旧密码验证身份、同时提交新密码的瞬间,两个密码的明文都会短暂存在于服务器内存中,系统直接在内存中计算两者的编辑距离等相似度指标,完成校验后立即清理内存中的明文数据,全程不会写入磁盘或数据库。
    如果需要和更早的多轮历史密码做相似度校验,合规方案会采用两类实现:一是每次设置新密码时,用不可逆的方式生成仅用于相似度比对的模糊特征存储,无法通过特征反向还原出明文;二是用存储在专用硬件安全模块(HSM)中的密钥加密历史密码,仅在校验时临时解密比对,密钥不会随业务库泄露。

当然也存在不合规的不良实践:部分中小型系统为了降低开发成本,可能会明文或弱加密存储历史密码,但这类做法不符合网络安全等级保护、PCI DSS等各类合规要求,正规厂商的系统均不会采用该方案。

内容的提问来源于stack exchange,提问作者Aarni Joensuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:27:00