Hola chicos/as,
tengo una gran problema con el algoritmo de encriptación AES. Llevo varios días liado con el tema pero no consigo solucionarlo, por lo que he decidido acudir a vuestra ayuda, a ver si me podéis echar una mano en el tema.
La cuestión es la siguiente:
Yo he encontrado varios ejemplos de encriptación de datos mediante AES, los cuales, al probarlos en un único programa me funcionan adecuadamente, encriptando y desencriptando todas las cadenas que se le pasan como parámetros.
Cuando traspaso estos ejemplos a mi código de mi aplicación, donde tengo un cliente y un servidor realizados ambos en java, al encriptar los datos en el cliente, y pasarle los datos encriptados (mediante sockets) al servidor, la encriptación en el cliente la realiza bien, y en ocasiones, también me desencripta bien en el servidor. El problema me pasa a veces, y me salta la siguiente excepción:
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when
decrypting with padded cipher
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at AES.desencriptarDatos(AES.java:131)
at AplicacionServidor.main(AplicacionServidor.java:84)
Otras veces me pone que el tamaño de bloque es incorrecto con lo que no se ha realizado el padding adecuadamente. Llevo bastantes días con el tema y no consigo solucionar nada al respecto. Me pasé de 3DES por este problema a AES y ahora sigo con el mismo error en este algoritmo. ¿Por qué puede ser mir problema?
Espero que alguien me pueda echar una mano, o guiarme en cómo puedo solucionar mi problema. Muchas gracias de antemano, un saludo.