fix: Fernet 密钥派生使用 SHA256 哈希生成合法 32 字节密钥
- 原因: key.ljust(44, b'=') 不产生合法的 Fernet 密钥 - 修复: SHA256(SECRET_KEY) → base64url 编码 → 有效 Fernet key
This commit is contained in:
parent
f0d61d5887
commit
c4c2b44434
|
|
@ -1,11 +1,17 @@
|
|||
import base64
|
||||
import hashlib
|
||||
from cryptography.fernet import Fernet
|
||||
from app.core.config import get_settings
|
||||
|
||||
|
||||
def _derive_fernet_key(secret: str) -> bytes:
|
||||
digest = hashlib.sha256(secret.encode("utf-8")).digest()
|
||||
return base64.urlsafe_b64encode(digest)
|
||||
|
||||
|
||||
def _get_fernet() -> Fernet:
|
||||
settings = get_settings()
|
||||
key = settings.SECRET_KEY.encode("utf-8")
|
||||
key = key.ljust(44, b"=")[:44]
|
||||
key = _derive_fernet_key(settings.SECRET_KEY)
|
||||
return Fernet(key)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue