Я пытаюсь создать метод шифрования AES, но по какой-то причине я получаюшифрования AES Java Invalid Длина ключа
java.security.InvalidKeyException: Key length not 128/192/256 bits
Вот код:
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);
}
Может ли кто-нибудь увидеть, что я делаю неправильно? Я думаю, что это может иметь какое-то отношение к алгоритму SecretKeyFactory, но это единственный, который я могу найти, который поддерживается в конечной системе, с которой я развиваюсь. Любая помощь будет оценена по достоинству. Благодарю.
Можете ли вы вставить исключение? –
Существует ответ в более раннем посте в [этой ссылке] (http://stackoverflow.com/questions/992019/java-256bit-aes-encryption/992413#992413). Надеюсь это поможет! –
так, кажется, что экземпляр java не поддерживает то, что мне нужно: «Ява.security.InvalidKeyException с сообщением« Недопустимый размер ключа или параметры по умолчанию »' – wuntee