Навскидку так:
1. Создаём потомка для ByteArrayOutputStream и перегружаем метод
write(byte[] b, int off, int len), чтобы прогонять записываемый массив байт через XOR
2. Создаём потомка для ByteArrayInputStream и перегружаем метод
read(byte[] b, int off, int len) чтобы прогонять читаемый массив байт через XOR
3. Для работы с настройками используем класс
Properties и его методы:
storeToXML(OutputStream os, String comment) для записи настроек в файл, и
loadFromXML(InputStream in) для считывания настроек.
В параметры этим методам передаёте экземпляры классов потоков, созданных на шагах 1 и 2