Files
LiteOps/backend/apps/utils/crypto.py
2025-07-23 13:44:47 +08:00

44 lines
1.3 KiB
Python

import base64
from cryptography.fernet import Fernet
from django.conf import settings
import hashlib
class CryptoUtils:
"""加密解密工具类"""
@staticmethod
def _get_key():
"""获取加密密钥"""
key_material = settings.SECRET_KEY.encode('utf-8')
digest = hashlib.sha256(key_material).digest()
key = base64.urlsafe_b64encode(digest)
return key
@staticmethod
def encrypt_password(password):
"""加密密码"""
if not password:
return password
try:
key = CryptoUtils._get_key()
fernet = Fernet(key)
encrypted = fernet.encrypt(password.encode('utf-8'))
return base64.urlsafe_b64encode(encrypted).decode('utf-8')
except Exception:
return password
@staticmethod
def decrypt_password(encrypted_password):
"""解密密码"""
if not encrypted_password:
return encrypted_password
try:
key = CryptoUtils._get_key()
fernet = Fernet(key)
encrypted_data = base64.urlsafe_b64decode(encrypted_password.encode('utf-8'))
decrypted = fernet.decrypt(encrypted_data)
return decrypted.decode('utf-8')
except Exception:
return encrypted_password