Cómo generar una clave secreta en Java una vez y usar esa clave en 2 programas diferentes

Mi objetivo es escribir un programa Java para cifrar un archivo de texto (cipher text) utilizandoAES algorithm. Y luego, escribe otro programa para descifrar ese archivo encriptado (cipher text) para recuperar el texto plano. Quiero usar la misma clave (la misma clave, generar una vez, guardarla en algún lugar y usarla tanto en el programa de cifrado como en el de descifrado) para el proceso de cifrado y descifrado. Si genero la clave y hago el cifrado y descifrado línea por línea en el mismo programa, entonces funciona perfectamente. Aquí está el fragmento de código de trabajo para eso:

        String strDataToEncrypt = new String();
        String strCipherText = new String();
        String strDecryptedText = new String();

        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(128);
        SecretKey secretKey = keyGen.generateKey();

        Cipher aesCipher = Cipher.getInstance("AES");
        aesCipher.init(Cipher.ENCRYPT_MODE,secretKey);

        strDataToEncrypt = "any text input";
        byte[] byteDataToEncrypt = strDataToEncrypt.getBytes();
        byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt); 
        strCipherText = new BASE64Encoder().encode(byteCipherText);
        System.out.println("cipher text: " +strCipherText);
        aesCipher.init(Cipher.DECRYPT_MODE,secretKey,aesCipher.getParameters());
        byte[] byteDecryptedText = aesCipher.doFinal(new BASE64Decoder().decodeBuffer(strCipherText));
        strDecryptedText = new String(byteDecryptedText);
        System.out.println("plain text again: " +strDecryptedText);

Pero, necesito tener dos programas diferentes (archivos java) para el cifrado y descifrado. Entonces, tengo que generar de alguna manera una clave y guardarla en algún lugar. Luego use la misma clave para el programa de cifrado y descifrado. ¿Cómo puedo hacer eso?

EDIT_1

KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
byte[] encoded = secretKey.getEncoded(); 
System.out.println("key: "+encoded);// key: [B@52b2a2d8

Puedo obtener el valor de la clave codificada utilizando el programa anterior. ¿Pero mi pregunta es cómo generar el SecretKey usando este valor en mi programa de descifrado?

Respuestas a la pregunta(2)

Su respuesta a la pregunta