vernam murcielago metodo hill encriptacion codigo cifrado afin java encryption cryptography aes

java - murcielago - codigo de encriptacion aes



Problema de cifrado AES 256 (1)

Si desea utilizar el cifrado AES 256, debe instalar los archivos de la Política de Jurisdicción de Fuerza Ilimitada:

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

Esto permite mayores niveles de encriptación como AES 256 y RSA 2048.

Reemplace los archivos del zip con los actuales en <java-home>/lib/security .

El siguiente código implementa perfectamente el cifrado / descifrado AES-128.

public static void main(String[] args) throws Exception { String input = JOptionPane.showInputDialog(null, "Enter your String"); System.out.println("Plaintext: " + input + "/n"); // Generate a key KeyGenerator keygen = KeyGenerator.getInstance("AES"); keygen.init(128); byte[] key = keygen.generateKey().getEncoded(); SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); // Generate IV randomly SecureRandom random = new SecureRandom(); byte[] iv = new byte[16]; random.nextBytes(iv); IvParameterSpec ivspec = new IvParameterSpec(iv); // Initialize Encryption Mode Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivspec); // Encrypt the message byte[] encryption = cipher.doFinal(input.getBytes()); System.out.println("Ciphertext: " + encryption + "/n"); // // Initialize the cipher for decryption cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivspec); // Decrypt the message byte[] decryption = cipher.doFinal(encryption); System.out.println("Plaintext: " + new String(decryption) + "/n"); }

Cuando quiero usar AES-256, pensé que se podía hacer modificando keygen.init(256); y byte[] iv = new byte[32]; , sin embargo, esto se convierte en error (Excepción en el hilo "principal" java.security.InvalidKeyException: Tamaño de clave ilegal)! ¿Alguien puede explicar por qué ocurre un error cuando realicé estas dos modificaciones y qué debería hacer? Gracias chicos :)