Hola, encontramos la solución a tu pregunta, has scroll y la hallarás más abajo.
Solución:
Java incluye AES listo para usar. Rijndael es AES. No necesita bibliotecas externas. Solo necesitas algo como esto:
byte[] sessionKey = null; //Where you get this from is beyond the scope of this post
byte[] iv = null ; //Ditto
byte[] plaintext = null; //Whatever you want to encrypt/decrypt
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
//You can use ENCRYPT_MODE or DECRYPT_MODE
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(sessionKey, "AES"), new IvParameterSpec(iv));
byte[] ciphertext = cipher.doFinal(plaintext);
Y eso es todo, para el cifrado/descifrado. Si está procesando grandes cantidades de datos, es mejor que lea fragmentos que sean múltiplos de 16 bytes y llame a update en lugar de doFinal (simplemente llame a doFinal en el último bloque).
Para una gran biblioteca gratuita, recomiendo BouncyCastle. Se mantiene activamente, es de alta calidad y tiene un bonito array de ejemplos de código. Para la documentación de referencia, tendrá que confiar más en los documentos generales de JCE.
No puedo decir qué biblioteca usamos para cumplir con los requisitos de certificación FIPS. Pero hay alternativas a CryptoJ que son mucho, mucho más baratas.
En general, recomendaría generar un nuevo key para cada mensaje que cifre con un cifrado simétrico como Rijndael, y luego cifre ese key con un algoritmo asimétrico como RSA. estos privados keys se puede almacenar en un software protegido por contraseña key almacene como PKCS # 12 o “JKS” de Java, o, para mayor seguridad, en token de hardware de “tarjeta inteligente” u otro módulo de hardware criptográfico.
Como descubrió recientemente mi empresa, AES no es exactamente Rijndael. AES tiene la restricción de que keys DEBE ser de 128, 192 o 256 bits; sin embargo, Rijndael permite keys que son 160 y 224 también.
Como lo indicó erickson arriba, BouncyCastle proporciona un objeto Rijndael que SÍ admite la función adicional key longitudes: 128/160/192/224/256 bits. Específicamente, eche un vistazo a la API ligera.
Gnu-crypto es otra biblioteca de código abierto; sin embargo, tampoco brinda soporte para 160 y 224 bits keys.
Entonces, si está buscando específicamente soporte completo de Rijndael, entonces BouncyCastle es el único que he encontrado hasta ahora.
Si para ti ha sido de utilidad este artículo, nos gustaría que lo compartas con el resto entusiastas de la programación y nos ayudes a difundir nuestra información.