Estoy tratando de crear un método de cifrado AES, pero por alguna razón me siguen dandode cifrado AES de Java Clave no válida longitud
java.security.InvalidKeyException: Key length not 128/192/256 bits
Aquí está el código:
public static SecretKey getSecretKey(char[] password, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException{
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
// NOTE: last argument is the key length, and it is 256
KeySpec spec = new PBEKeySpec(password, salt, 1024, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
return(secret);
}
public static byte[] encrypt(char[] password, byte[] salt, String text) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, InvalidParameterSpecException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException{
SecretKey secret = getSecretKey(password, salt);
Cipher cipher = Cipher.getInstance("AES");
// NOTE: This is where the Exception is being thrown
cipher.init(Cipher.ENCRYPT_MODE, secret);
byte[] ciphertext = cipher.doFinal(text.getBytes("UTF-8"));
return(ciphertext);
}
¿Alguien puede ver lo que estoy haciendo mal? Estoy pensando que puede tener algo que ver con el algoritmo SecretKeyFactory, pero es el único que puedo encontrar que es compatible con el sistema final en el que me estoy desarrollando. Cualquier ayuda sería apreciada. Gracias.
¿Puedes por favor pegar la excepción? –
Hay una respuesta en una publicación anterior en [este enlace] (http://stackoverflow.com/questions/992019/java-256bit-es_encryption/992413#992413). ¡Espero que esto ayude! –
entonces, parece que la instancia java no es compatible con lo que necesito: 'A java.security.InvalidKeyException con el mensaje "Tamaño de clave ilegal o parámetros predeterminados"' – wuntee