from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend


class AESCipher:
    def __init__(self):
        self.key = b'50102fa64073ad76'  # 用适当的方式转换或直接定义为字节串
        self.iv = b'173d023138824bb0'  # 同上

    def aes_encrypt(self, data):
        cipher = Cipher(algorithms.AES(self.key), modes.CBC(self.iv), backend=default_backend())
        encryptor = cipher.encryptor()
        ct = encryptor.update(self._pad(data).encode()) + encryptor.finalize()
        return ct.hex().upper()

    def aes_decrypt(self, data):
        cipher = Cipher(algorithms.AES(self.key), modes.CBC(self.iv), backend=default_backend())
        decryptor = cipher.decryptor()
        decrypted_data = decryptor.update(bytes.fromhex(data)) + decryptor.finalize()
        return self._unpad(decrypted_data).decode()

    def _pad(self, s):
        return s + (16 - len(s) % 16) * chr(16 - len(s) % 16)

    def _unpad(self, s):
        return s[:-ord(s[len(s) - 1:])]