Estoy usando un cifrado AES con un tamaño de bloque de 16 bytes.Java Cipher - AES Padding Problema
Si trato de encriptar una cadena de 16 bytes no tengo problemas, pero cualquier otra longitud, no un múltiplo de 16, arroja una excepción.
Sé con 3-DES que puede especificar un tipo de relleno como parte del algoritmo y se maneja sin trabajo adicional (por ejemplo, DES/CBC/PKCS5Padding), pero ¿hay alguna manera de especificar esto con AES?
¿O necesito rellenar manualmente las cuñas a un múltiplo de 16, y luego quitarlas cuando descifro? Aquí hay una muestra de código abreviado.
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
Todas y cada una de las siguientes son bienvenidas!
Gracias de antemano, Ciarán
comentario pedante: AES solo tiene un tamaño de bloque de 16 bytes, por definición. Rijndael (el nombre original y la especificación) tenía tamaños de bloques de 16,24 y 32 bytes, pero para uso en AES solo se permiten bloques de 16 bytes. Rijndael también admite keysizes 128, 160, 192, 224, 256, pero solo 128, 192 y 256 son compatibles con AES. –