Не удалось инициализировать cipher.init()
Я пытаюсь прочитать файл размером 1 КБ, затем зашифровать и расшифровать его с помощью алгоритма AES в режиме CBC. Когда я пытаюсь инициализировать шифр, он выдает ошибку. Пожалуйста, найдите код ниже. Я не смог найти метод init в классе шифра, который принимает "режим шифрования", "секретный ключ" и вектор инициализации класса IvParameterSpec. Я вижу метод init с ожидаемыми параметрами, такими как (режим шифрования int, ключ Key, AlgorithmParameters algoParameters, SecureRandom secureRandom)
Нужно ли конвертировать мой ключ и вектор инициализации в нужный класс? Любые идеи, чтобы продолжить, было бы полезно.
import sun.security.provider.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import java.io.File;
import java.security.AlgorithmParameters;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidParameterSpecException;
public class AESFileEncryptionDecryption {
public class AES128CBC{
SecretKey secretKey;
Cipher cipher;
SecureRandom secureRandom = new SecureRandom();
byte[] iv = new byte[16];
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
{
try {
secretKey = KeyGenerator.getInstance("AES").generateKey();
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(1,secretKey,ivParameterSpec);
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
File inputFile_1KB = new File("/Users/siddharthsinha/Desktop/input1KB.txt");
File encryptedFile_1KB = new File("/Users/siddharthsinha/Desktop/input1KB.encrypted");
File decryptedFile_1KB = new File("/Users/siddharthsinha/Desktop/input1KB.decrypted.txt");
}
}
1 ответ
Решение
Ваш код не перехватывает и не выдает два возможных исключения:
try {
secretKey = KeyGenerator.getInstance("AES").generateKey();
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(1,secretKey,ivParameterSpec);
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
}