Puede ser seguro pero a la vez tiene muy poco rendimiento. Cuando se diseña un sistema (nunca estudié nada, hablo por experiencia así que corrijanme si me equivoco) hay que tener en cuenta varios factores y en este caso uno es la relación seguridad/rendimiento. Imagino que cuando hay que cifrar más de 1MB de datos el sistema se vuelve lentísimo y no lo especificas bien pero parece ser lineal, así que un sistema lineal que es lento no va a ser muy aceptado porque ya existen otros muy fuertes y muy rápidos como DES.
Pero si querés mejorar esto tengo algunas ideas. Por empezar fijate que todos los números menos el último son de 16 bits. Entonces en lugar de escribir el número como string podrías usar una variable numérica de tipo Integer, esto reduciría el tamaño considerablemente porque ocuparía 2 bytes cada número en lugar de 4 o 5. En el caso del último no me quiero arriesgar pero quizá tenga que ver con alguna clave, si sabes que este último siempre va a ser de 32 bits entonces usas una variable de tipo Long y lo pones a lo último, así siempre los últimos 4 bytes del texto cifrado será la clave (no digo que sea así, es un ejemplo hipotético).
Bueno y con respecto a la compresión, la librería se llama gzip.dll, hay mucha info en google sobre el uso de esta biblioteca así que busca un poco
.
Sólo tené en cuenta esos puntos que te dije, para las personas normales (los usuarios) es mejor que sea rápido y no seguro, no les importa cómo funciona un programa internamente sino que sea lo más rápido posible. Vamos que a nadie le gusta esperar que se compriman 100MB con el WinZip
.
Saludos.