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