更新加密器以支持从环境变量或配置读取密钥

This commit is contained in:
2026-02-24 17:03:25 +08:00
parent 0d3e6ca4fa
commit 0bc4058f23
2 changed files with 15 additions and 3 deletions

View File

@@ -3,6 +3,8 @@ from typing import Optional
import base64
import os
from app.core.config import settings
class Encryptor:
"""
使用 Fernet (对称加密) 实现数据加密/解密
@@ -17,10 +19,10 @@ class Encryptor:
key: 加密密钥,如果为 None 则从环境变量读取
"""
if key is None:
key_str = os.getenv("ENCRYPTION_KEY")
key_str = os.getenv("ENCRYPTION_KEY") or settings.ENCRYPTION_KEY
if not key_str:
raise ValueError(
"ENCRYPTION_KEY not found in environment variables. "
"ENCRYPTION_KEY not found in environment variables or .env. "
"Generate one using: Encryptor.generate_key()"
)
key = key_str.encode()
@@ -73,6 +75,9 @@ class Encryptor:
# 全局加密器实例(懒加载)
_encryptor: Optional[Encryptor] = None
def is_encryption_configured() -> bool:
return bool(os.getenv("ENCRYPTION_KEY") or settings.ENCRYPTION_KEY)
def get_encryptor() -> Encryptor:
"""获取全局加密器实例"""
global _encryptor