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

相关推荐
杨杨杨大侠5 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
LOVE️YOU6 小时前
Python 在定义函数时,究竟定义的是什么?
python
段一凡-华北理工大学6 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
Minecraft红客6 小时前
以撒的结合
python·游戏·电脑·娱乐
Circ.6 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
风早爽太7 小时前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi
李航19838 小时前
给自己的图形引擎,配上了AI渲染,做设计真是太方便了
人工智能·python·计算机视觉·ai·ai编程
L@ncor8 小时前
第六章 框架开发实践 · 学习笔记(AutoGen / AgentScope / CAMEL / LangGraph)
python·框架·autogen·langgraph·agentscope
Zhou1411368 小时前
SpringSecurity_02_授权与高级功能
开发语言·python
摇滚侠9 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python