He estado pensando en este método, pero realmente no me metí en él porque pensé que era una estupidez por alguna razón, tal vez porque nunca había oído hablar de él y es bastante obvio. Pero hoy me metí un poco más en eso y lo pensé.
Si quiero hablar de forma segura con un compañero en Internet con un programa que hice especialmente para esto, que solo nosotros tenemos. El programa hace que mi computadora se conecte a su computadora o viceversa y transfiera datos.
Ahora, para simplificarlo, digamos que solo usamos el idioma inglés sin ningún símbolo, solo con letras minúsculas.
Podemos establecer, por ejemplo, que a
será igual a gH5S
y así sucesivamente, y al final recibiremos un texto extenso de galimatías, y además de eso tendremos un cifrado RSA antes de enviarlo .
Entiendo, el pirata informático después de descifrar los datos RSA puede dividir el texto en partes que se repiten como gH5S
, pero se usan muchos caracteres, ¿cómo puede saber qué división es qué carácter? Necesita adivinar las palabras y, de alguna manera, estar seguro, y hay muchas posibilidades para construir palabras.
Hay un ejemplo de programa simple en Java para explicar esto:
public class Test {
static String[] replacements = new String[] {
"abK98", "HGD3x", "aRfXZ", "hdZdgb", "eDzfh", "aieSZ3", "iLz5",
"zH4", "ab98", "abK2398", "a5568", "ACz98", "loW91", "ZmKuJ",
"azS6D", "ZcfZS", "dFXze", "FszXF", "rXzFttX", "fdXRS", "52aF",
"ZaWRQ", "qPweQ", "dWtQY", "puEz", "ZdeA"
};
static String space = "lKi89";
public static void main (String[] args) throws java.lang.Exception
{
StringBuilder encrypted = new StringBuilder();
String text = "hello i really like to program and be on stackexchange";
for (int i = 0 ; i < text.length(); i++) {
char c = text.charAt(i);
if (c == ' ') {
encrypted = encrypted.append(space);
continue;
}
int idx = Character.getNumericValue(c) - 10;
encrypted = encrypted.append(replacements[idx]);
}
System.out.println(encrypted.toString());
}
}
La matriz replacements
, primer índice es a
y el último es z
por orden.
Y esta es la salida:
zH4eDzfhACz98ACz98azS6DlKi89ab98lKi89FszXFeDzfhabK98ACz98ACz98puEzlKi89ACz98ab98a5568eDzfhlKi89fdXRSazS6DlKi89ZcfZSFszXFazS6DiLz5FszXFabK98loW91lKi89abK98ZmKuJhdZdgblKi89HGD3xeDzfhlKi89azS6DZmKuJlKi89rXzFttXfdXRSabK98aRfXZa5568eDzfhdWtQYaRfXZzH4abK98ZmKuJiLz5eDzfh
¿Es un mal método? ¿Se puede descifrar fácilmente espiando los datos? ¿Cómo?