Skip to content

5.6 密码与加密服务 ​

概述

密码存储采用 外部 salt + bcrypt(password+salt):salt 独立存放、bcrypt 负责哈希。utility/crypto 提供生成、比对与格式识别的完整 API。

API(utility/crypto) ​

函数说明
GenerateSalt()生成随机盐
HashPassword(password, salt)bcrypt(password+salt) 哈希
VerifyPassword(hashed, password, salt)恒时比对
IsBcrypt(hashed)识别是否 bcrypt 格式(兼容迁移)

校验流程(登录第 5 步) ​

text
读取用户记录的 salt:
  salt 非空 → VerifyPassword(库中哈希, 输入密码, salt)
  salt 为空 → 直接比对密码(兼容无盐存量数据)

salt 为空时的直接比对是兼容路径——新数据一律走加盐哈希。

设计要点 ​

要点说明
salt 独立存储不同用户同密码哈希不同;防彩虹表
bcrypt 成本因子计算密集,暴力枚举代价高
恒时比对VerifyPassword 内部恒时比较,防时序侧信道
数据库不存明文任何接口/日志/导出都不出现明文

修改个人密码 ​

个人中心经 PUT /api/index/updatePassword 修改:校验旧密码 → 新密码哈希落库。管理员重置密码属于手写 service 方法(非标准五方法),走对应权限节点。

其他加密场景 ​

场景处理
Token 签名jwt.secret HMAC(非密码哈希体系)
传输生产 HTTPS(Nginx 终止 TLS)
敏感展示前端脱敏(手机号等)

下一步 ​

→ 5.7 接口限流(RateLimit)

小蚂蚁云团队 · 提供技术支持