Quiero encriptar una cadena usando AES con mi propia clave. Pero estoy teniendo problemas con la longitud de bits de la clave. ¿Puedes revisar mi código y ver qué debo arreglar/cambiar?Java AES y usando mi propia clave
public static void main(String[] args) throws Exception {
String username = "[email protected]";
String password = "Password1";
String secretID = "BlahBlahBlah";
String SALT2 = "deliciously salty";
// Get the Key
byte[] key = (SALT2 + username + password).getBytes();
System.out.println((SALT2 + username + password).getBytes().length);
// Need to pad key for AES
// TODO: Best way?
// Generate the secret key specs.
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal((secrectID).getBytes());
System.out.println("encrypted string: " + asHex(encrypted));
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] original = cipher.doFinal(encrypted);
String originalString = new String(original);
System.out.println("Original string: " + originalString + "\nOriginal string (Hex): " + asHex(original));
}
En este momento me sale una excepción "no válida longitud de la clave AES: 86 bytes". ¿Debo rellenar mi llave? ¿Cómo debería hacerlo?
¿También necesito configurar algo para ECB o CBC?
Gracias
[Encuentro su falta de perturbar la sal al azar] (http://d37nnnqwv9amwr.cloudfront.net/photos/images/newsfeed/000/065/003/Darth-Vader-I-FIND- SU-FALTA DE FE-DISTURBING.jpg). Ahora en serio: en el contexto de la criptografía [SALT debe ser al azar] (http://en.wikipedia.org/wiki/Salt_ (criptografía)) –
Jaja, gracioso. De hecho, tengo una sal al azar, pero limpié mi código para que mi pregunta fuera más clara. Es por eso que la variable se llama SALT2. Pero es una buena referencia para otros que se encuentran con este mismo problema y les gusta copiar/pegar código. –