Desde mi punto de vista lo primero que deberiais hacer es entender una lógica de programación. Qué es necesario para programar, qué elementos son necesarios, de que forma se interactua con un sistema... para despues tener clara una metodología: como se construye un bloque if y para que sirve, como se construye una sentencia for y para sirve... y despues de esto aplicarlo a un lenguaje especifico.
Cada lenguaje de programación tiene sus propias funciones, su propia forma de actuar con o contra un sistema operativo... pero la metodología a aplicar es la misma en todos (o casi todos). Cada lenguaje constituye de forma especifica una metodología, pero el fin de la misma es común para todos. Me explico:
Poneros en un supuesto.
En C, un simple bucle "for" se puede constituir de forma diferente que en visual basic, pero el fin es el mismo.
Yo creo que tomando estos datos como punto de partida tendreis resueltas muchas dudas que el día de mañana os pueden o podrán plantear problema a la hora de programar.
Tu mismo lo has dicho, depende de la longitud del cifrado y de la aleatoriedad de la suma para los bytes.
Con los equipos que hay ahora y con los avances que está habiendo en computación cuantica, una criptografia, digamos, normal (con normal me refiero a la que solemos utilizar), para romper un sistema como el tuyo o como los actuales, la relación entre coste/tiempo no sería muy elevada.
Aún asi, para un chat para hablar con los colegas (por ejemplo xDD), me parece buen sistema (desde mi punto de vista).
Busca información sobre cabeceras de correos. A partir de ahí, busca en google una pagina donde te puedan dar info sobre esa ip y si, por ejemplo, tiene asociado algún sitio web (un whois te vendría bien).