FastAPI中passlib包的作用

简介

passlib[bcrypt] 是 Passlib 密码哈希库及其 bcrypt 算法支持的安装方式,核心用途是安全地对密码进行哈希存储和验证,防止明文密码泄露。

简单来说,它帮你把用户密码变成一串不可逆的"乱码"存进数据库,登录时再比对,而不是直接存明文。它主要有这几个关键点:

核心作用

  • 密码哈希:用 pwd_context.hash("密码") 生成带随机盐值的哈希串,即使两个用户密码相同,结果也不同,还能防彩虹表攻击。
  • 密码验证:用 pwd_context.verify("密码", 哈希值) 校验登录,自动处理盐值和迭代逻辑,不用自己写比对代码。
  • 算法管理:通过 CryptContext 统一管理算法,比如 schemes=["bcrypt"],还能设置 bcrypt__rounds=12 控制计算强度(默认12,每+1耗时翻倍)。

和直接装 bcrypt 的区别

  • Passlib 更上层:它支持 bcrypt、Argon2、PBKDF2 等多种算法,还能自动处理算法迁移和重哈希;而 bcrypt 是底层库,只管单一算法。
  • 安装方式:pip install passlib[bcrypt] 会同时装好 Passlib 和 bcrypt 依赖,保证开箱即用;如果只装 passlib 不带方括号,用 bcrypt 时可能报错。

✅ 常见用法示例

python 复制代码
from passlib.context import CryptContext

pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

注册时哈希
hashed = pwd_context.hash("user_password")

登录时验证
is_correct = pwd_context.verify("user_password", hashed)  True

⚠️ 注意:Passlib 只做哈希,不做加密解密。哈希是单向的,无法还原出原密码,这也是安全设计;如果需要可逆加解密,得用 cryptography 这类库。

相关推荐
心中有你02141 小时前
Python Tkinter 情侣恋爱日记桌面小程序(本地文件存储,无数据库)
开发语言·python
PFFstronger1 小时前
从 0 到 1 搭建接口自动化测试框架:分层架构 + 数据驱动 + 接口依赖编排
python·架构·自动化
Andya_net1 小时前
Spring Boot | 条件注解完全指南:从 @Conditional 到 @ConditionalOnExpression 的原理、实践与避坑
spring boot·后端·python
weixin_440730502 小时前
playwright浏览器自动化实战笔记3-登陆以及退出登陆流程-多用户操作
笔记·python·自动化
卷无止境2 小时前
测试全绿,功能能跑,代码却烂到没法上线:AI编程助手留下的十个坑
后端·python
卷无止境2 小时前
终端里的AI战争,命令行编程代理全景扫描
python·agent
SamChan902 小时前
PDF多语言翻译的格式还原技术拆解:从版面分析到内容重排的工程实现
python·ai·pdf·机器翻译
liuze4083 小时前
安装boss-zhipin-mcp(招聘)
开发语言·python
TickDB3 小时前
Python 接入 A 股盘前集合竞价数据:AkShare 报错到 TickDB 实测的完整解法
python·websocket·行情数据 api