1. 基本概念
Fernet 是 cryptography 库提供的对称加密方案- 确保数据的机密性和完整性
- 使用相同的密钥进行加密和解密
2. 工作原理
- 基于AES 128加密算法
- 使用HMAC进行消息认证
- 自动处理加密过程中的初始化向量(IV)
- 生成的密文包含时间戳,可防止重放攻击
3. 核心方法
encrypt(data): 加密数据,返回字节串decrypt(token): 解密数据,返回原始数据
4. 密钥生成过程(如代码所示)
salt = b'securekv_default_salt_2025'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100_000,
)
key = base64.urlsafe_b64encode(kdf.derive(password.encode()))
cipher = Fernet(key)
5. 主要优势
- 简单易用: 封装复杂细节,API简洁
- 安全性高: 提供认证加密,防止篡改
- 无状态: 不需要维护加密状态
- 标准化: 基于已建立的加密标准
6. 注意事项
- salt固定问题: 当前实现使用固定salt,生产环境应随机生成
- 密钥管理: 需要安全地存储和管理密钥
- 密码强度: 用户密码应足够复杂以确保安全性
7. 使用场景
- 敏感数据的本地存储加密
- 配置文件加密
- 会话数据保护
- API令牌等临时凭证的加密存储