ValueError: Incorrect AES key length (44 bytes) Python

Viewed 74

I'm having an issue while using the Crypto.Cipher import AES as follows:

from base64 import b64decode, b64encode

def encrypt(self, text):
        if not text:
            return None
        if not text.strip():
            return None
        _key     =  self.key.encode('utf-8')
        _iv      =  self.iv.encode('utf-8')
        text     =  self.pad(text)
        encryptor=  AES.new(_key, AES.MODE_CBC, _iv)
        try:
            return b64encode(encryptor.encrypt(text)).decode('utf-8')
        except Exception:
            raise ValueError("Error al encriptar el siguiente texto => {}".format(text))
    def decrypt(self, text):
        if not text:
            return None
        if not text.strip():
            return None
        _key     =  self.key.encode('utf-8')
        _iv      =  self.iv.encode('utf-8')
        text     =  str(text)
        decryptor =  AES.new(_key,AES.MODE_CBC,_iv)
        try:
            result = decryptor.decrypt(b64decode(text)).decode('utf-8')
            return self.clean_text(result)
        except Exception:
            raise ValueError("Error al desencriptar el siguiente texto => {}".format(text))

But I'm having the following error : ValueError: Incorrect AES key length (44 bytes) I'm sure it has to be something with the decoding at the decrypt function, but not sure yet, does anyone know how to solve this problem?


Full class:

class symmetric_custom_tokeniza:

    def clean_text(self, text):
        #Elimina caracteres especiales generados por el padding
        return re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f\n\r\t]').sub('', text.strip())
    
    def pad(self,text):
        try:
            block_size= self.block_size
            text = text.encode('utf-8')
            text = text +(block_size-len(text)%block_size)*chr(block_size-len(text)%block_size).encode('utf-8')
            return text
        except Exception:
            raise ValueError("Error al generar el padding => {}; tamaño caracteres en utf-8 {}".format(text, len(text)))
    #[ Encrypt - Decrypt BUs ]
    
    def encrypt(self, text):
        from base64 import b64decode, b64encode
        import base64
        if not text:
            return None
        if not text.strip():
            return None
        _key     =  self.key.encode('utf-8')
        _iv      =  self.iv.encode('utf-8')
        text     =  self.pad(text)
        #_key = base64.b64decode(self.key)
        encryptor=  AES.new(_key, AES.MODE_CBC, _iv)
        try:
            return b64encode(encryptor.encrypt(text)).decode('utf-8')
        except Exception:
            raise ValueError("Error al encriptar el siguiente texto => {}".format(text))
    def decrypt(self, text):
        import base64
        from base64 import b64decode, b64encode

        if not text:
            return None
        if not text.strip():
            return None
        _key     =  self.key.encode('utf-8')
        _iv      =  self.iv.encode('utf-8')
        text     =  str(text)
        #_key = base64.b64decode(self.key)
        decryptor =  AES.new(_key,AES.MODE_CBC,_iv)
        try:
            result = decryptor.decrypt(b64decode(text)).decode('utf-8')
            return self.clean_text(result)
        except Exception:
            raise ValueError("Error al desencriptar el siguiente texto => {}".format(text))
0 Answers
Related