from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Util.strxor import strxor
import base64
import hashlib
class AESCipher:
def __init__(self, key):
self.key = key.encode('utf-8')
if len(self.key) != 16:
md5_hash = hashlib.md5()
md5_hash.update(self.key)
self.key = md5_hash.digest()[:16]
self.block_size = AES.block_size
def encrypt(self, data):
cipher = AES.new(self.key, AES.MODE_ECB)
padded_data = pad(data.encode('utf-8'), self.block_size, style='pkcs7')
encrypted_bytes = cipher.encrypt(padded_data)
encrypted_b64 = base64.b64encode(encrypted_bytes).decode('utf-8')
return encrypted_b64
def decrypt(self, encrypted_data):
cipher = AES.new(self.key, AES.MODE_ECB)
encrypted_bytes = base64.b64decode(encrypted_data)
decrypted_padded = cipher.decrypt(encrypted_bytes)
decrypted_data = unpad(decrypted_padded, self.block_size, style='pkcs7')
return decrypted_data.decode('utf-8')
if __name__ == "__main__":
key = "bSRRwjoAoGW2dX6w"
data = "^$HongXiu245#Qaf"
aes = AESCipher(key)
encrypted = aes.encrypt(data)
print(f"Encrypted: {encrypted}")
decrypted = aes.decrypt(encrypted)
print(f"Decrypted: {decrypted}")