mirror of
https://github.com/opsre/LiteOps.git
synced 2026-02-19 21:41:10 +08:00
44 lines
1.3 KiB
Python
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 |