Je suis en train de créer une méthode de cryptage AES, mais pour une raison que je continue à obtenirAES Java non valide Longueur de la clé
java.security.InvalidKeyException: Key length not 128/192/256 bits
Voici le code:
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);
}
Quelqu'un peut-il voir ce que je fais mal? Je pense qu'il peut avoir quelque chose à voir avec l'algorithme de SecretKeyFactory, mais c'est le seul que je peux trouver qui est pris en charge sur le système final que je développe. Toute aide serait appréciée. Merci.
Pouvez-vous s'il vous plaît coller l'exception? –
Il y a une réponse dans un article précédent à [ce lien] (http://stackoverflow.com/questions/992019/java-256bit-aes-encryption/992413#992413). J'espère que cela t'aides! –
donc, il semble que l'instance java ne supporte pas ce dont j'ai besoin: 'Une java.security.InvalidKeyException avec le message "Taille de clé illégale ou paramètres par défaut"' – wuntee