defderive_key(password: str) -> bytes: salt = b'simple_todo_salt'# 固定盐,实际项目建议随机+存文件 kdf = hashlib.pbkdf2_hmac('sha256', # 哈希算法 password.encode(), # 用户密码转字节 salt, # 防彩虹表100000, # 迭代10万次,增加破解难度 dklen=32# 输出32字节,正好是Fernet需要的 )return base64.urlsafe_b64encode(kdf) # Fernet要求base64编码