Pregunta

Estoy usando un cifrado AES con un tamaño de bloque de 16 bytes.

Si intento cifrar una cadena de 16 bytes, no tengo problemas, pero cualquier otra longitud que no sea un múltiplo de 16 arroja una excepción.

Sé que con 3-DES 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 las pytes manualmente a un múltiplo de 16 y luego pelarlas cuando las descifre? Aquí hay un ejemplo 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 respuestas son apreciadas!

Gracias de antemano, Ciar & # 225; n

¿Fue útil?

Solución

Debería funcionar exactamente igual con AES, es decir, el modo de relleno debe especificarse junto con el cifrado. Los modos de relleno que se implementan dependen del proveedor y deben describirse en su documentación.

Según la documentación de JCE: http://java.sun.com /j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA los modos de relleno estándar como PKCS5Padding siempre deben ser compatibles (al menos, así es como lo interpreto).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top