Python密码加密与校验详解
pwd_context = CryptContext(schemes=[“bcrypt”], deprecated=“auto”)相关知识
下面详细解释这行代码及相关知识:
- 代码含义
Apply to auth.py
)
这是使用 passlib 库中的 CryptContext 类来创建一个密码加密/校验的上下文对象。
schemes=[“bcrypt”] 指定了加密算法为 bcrypt。
deprecated=“auto” 表示如果有更安全的算法时,自动标记旧算法为过时。 - 相关知识
2.1 什么是 passlib?
passlib 是 Python 中常用的密码哈希库,专门用于安全地存储和校验用户密码。
它支持多种哈希算法(如 bcrypt、pbkdf2_sha256、argon2 等),并能方便地切换和升级算法。
2.2 什么是 CryptContext?
CryptContext 是 passlib 的核心类,用于统一管理多种哈希算法的配置和使用。
你可以用它来加密(hash)密码、校验密码、自动升级旧密码哈希等。
2.3 bcrypt 算法
bcrypt 是一种专为密码存储设计的哈希算法,安全性高,抗暴力破解能力强。
它有“加盐”机制,每次加密同一个密码结果都不同,能有效防止彩虹表攻击。
目前是业界推荐的主流密码哈希算法之一。
2.4 deprecated=“auto” 的作用
这个参数用于算法升级场景。
如果你将来想把密码哈希算法从 bcrypt 升级到 argon2,只需把 schemes 改为 [“argon2”, “bcrypt”],passlib 会自动把 bcrypt 标记为过时。
用户下次登录时,系统会自动用新算法重新加密密码。 - 实际用法举例
Apply to auth.py
True - 总结
这行代码的作用是:创建一个安全的密码加密/校验环境,默认使用 bcrypt 算法,支持未来算法升级。
推荐所有涉及用户密码的系统都用 passlib + bcrypt/argon2 方案,切勿明文存储密码!