mirror of
https://github.com/opsre/LiteOps.git
synced 2026-05-09 05:27:25 +08:00
✨ feat: 新增LDAP认证
This commit is contained in:
44
backend/apps/utils/crypto.py
Normal file
44
backend/apps/utils/crypto.py
Normal file
@@ -0,0 +1,44 @@
|
||||
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
|
||||
Reference in New Issue
Block a user