class AESCipher:

    def __init__(self, key):
        """
        Requires hex encoded param as a key
        """
self.key = key.decode('hex')

def encrypt(self, raw):
    """
        Returns hex encoded encrypted value!
        """
raw = pad(raw)
iv = Random.new().read(AES.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return (iv + cipher.encrypt(raw)).encode('hex')

def decrypt(self, enc):
    """
        Requires hex encoded param to decrypt
        """
enc = enc.decode('hex')
iv = enc[:16]
enc = enc[16:]
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return unpad(cipher.decrypt(enc))
if __name__ == '__main__':
    key = '140b41b22a29beb4061bda66b6747e14'
ciphertext = (
    """4ca00ff4c898d61e1edbf1800618fb2828a226d160dad07883d04e008a7897ee2e4b7465d5290d0c0e6c6822236e1daafb94ffe0c5da05d9476be028ad7c1d81"""
    )
key = key[:32]
decryptor = AESCipher(key)
plaintext = decryptor.decrypt(ciphertext)
print('%s' % plaintext)
AES decryption padding with PKCS5 Python