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 这类库。

相关推荐
全栈弄潮儿4 分钟前
Python实战第9期:文件操作
后端·python·编程语言
小星星_ios9 分钟前
从 3Blue1Brown 到 NumPy:手写一个神经网络训练 MNIST
人工智能·python·神经网络
Maxwin13 分钟前
Manim 竖屏画布选 9×16 还是 4.5×8?从 font_size 和每单位像素数说起
python·ffmpeg
昭昭日月明19 分钟前
使用 Ragas 量化 RAG
python·langchain·ai编程
姜九笙56125 分钟前
python学习---归来仍是新人
java·python·学习
幸福清风41 分钟前
从域名到一行 nginx 配置:一次站点 HTTPS 证书更换与排障复盘
python·nginx·https
云水初1 小时前
【agent篇】RAG Agent避坑指南(附高级RAG Agent汇总)
开发语言·笔记·python·学习·langchain·agent·rag
薛定猫AI1 小时前
【技术干货】多AI团队大模型协作编排与编程项目评测架构解析
python·机器学习·ai·大模型·技术实战
外收内放1 小时前
数据分析(图表信息详解)
python·学习·数据分析·matplotlib
1-1=02 小时前
Python3 开发环境
python