Мне нужно создать пустой файл KeyStore (с именем KeyStoreAES.jks), а затем сохранить AES SecretKey в этот файл, все это программно из Java.
У меня есть эта функция, которая создает файл .jks:
//Función that creates KeyStoreAES.jks
private static void CreateKeyStoreAES(String path)
{
try
{
//Check if file already exists
File keyStoreFile = new File(path);
if (keyStoreFile.exists())
{
keyStoreFile.delete();
} //if
keyStoreFile.createNewFile();
}
catch (IOException ex)
{
System.out.println("IOException");
}
} //CrearKeyStoreAES
Эта функция работает нормально. Затем у меня есть другая функция для вставки ключа в этот файл:
//Storing Key into KeyStore file
private static void StoreKey(String path, SecretKey key)
{
try
{
//KeyStore
KeyStore ks = KeyStore.getInstance("JKS"); //JCEKS, JKS
//FileInputStream
FileInputStream fis = new FileInputStream(path);
//Load KeyStore file
ks.load(fis, keyStorePass);
}
catch (CertificateException ex)
{
System.out.println("CertificateException");
}
catch (IOException ex)
{
System.out.println("IOException");
}
catch (KeyStoreException ex)
{
System.out.println("KeyStoreException");
}
catch (NoSuchAlgorithmException ex)
{
System.out.println("NoSuchAlgorithmException");
} //try
} //StoreKey
Вызов функции загрузки из класса KeyStore вызывает IOException. Это потому, что файл, который пытается загрузить, пуст? Насколько я искал в интернете, чтобы вставить ключ в хранилище ключей, вам нужно загрузить этот файл в объект хранилища ключей.