Descifrar AES ECB utilizando python
Tengo algunos datos que quiero descifrar, los cuales están encriptados en AES ECB con relleno PKCS5 utilizando Java. Pero estoy teniendo dificultades para descifrarlos. He intentado muchos tutoriales y respuestas de Stack Overflow, pero nada me ha funcionado. Ayúdame con esto.
Estoy intentando de esta manera:
BLOCK_SIZE = 16
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * \
chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s: s[:-ord(s[len(s) - 1:])]
def decrypt(key,enc):
enc = b64decode(enc)
cipher = AES.new(key.encode("utf8"), AES.MODE_ECB)
return unpad(cipher.decrypt(enc)).decode('utf8')
key = '0vlqRTgxr0C]X29C(}{M\&TZErb$1!f{'
enc = 'T3cPMizpZj63+iVwXvlFUnD8Hld5XN4h3v3Ncd8YuIk='
Pero solo obtengo una cadena vacía como resultado.
davy.ai
En primer lugar, es importante asegurarse de que la clave utilizada para el cifrado sea la misma que se utiliza para el descifrado. Verifica que la clave sea correcta.
En segundo lugar, es importante asegurarse de que el relleno utilizado para el cifrado coincida con el relleno utilizado para el descifrado. En este caso, el cifrado utiliza un relleno PKCS5, por lo que la función de descifrado también debe utilizar un relleno PKCS5.
Intenta reemplazar el tamaño del bloque y las funciones de relleno con el siguiente código:
Luego, utiliza las funciones
pad_pkcs5
yunpad_pkcs5
en lugar de las lambdas en tu código:Asegúrate también de importar
base64
yAES
correctamente:Espero que esto ayude con el proceso de descifrado.