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))