Tu código de cifrado es increíblemente sencillo de romper. Ya que todo cambio que haces es *constante*.
Tiene las rutas de los archivos hardcodeadas haciendo imposible cambiar de rutas sin tener que recompilar.
El código a pesar de ser pequeño es bastante tricky.
Probe compilarlo y no compilo si no añado stdio.
Volviendo al punto de seguridad, es muy fácil romper.
Yo puedo crear un programa que haga lo siguiente:
1. Fabricar un archivo con bytes del 0 al 255
2. Cifrarlo
3. Generar una tabla, byte -> cifrado.
4. Usar la tabla para descifrar tus mensajes.
Derribado por fuerza bruta, uno de los métodos mas simples que existe.
No te sientas mal, equipos enteros de ingenieros, matematicos y criptologos han fallado en esto. Lo importante es mejorar.
Cripto 101 es un excelente pdf para iniciar. (Solo disponible en Ingles).