Ho pensato a questo metodo ma non ci sono riuscito perché pensavo che fosse stupido da fare per qualche motivo, forse perché non ne ho mai sentito parlare ed è abbastanza ovvio. Ma oggi ci ho messo un po 'di più e ci ho pensato.
Se voglio parlare in sicurezza con un compagno su Internet con un programma che ho creato appositamente per questo, che solo noi abbiamo. Il programma rende il mio computer collegato al suo computer o viceversa e trasferisce i dati.
Ora il fatto è che, per semplificare, diciamo che usiamo solo la lingua inglese senza simboli, solo caratteri minuscoli.
Possiamo impostare ad esempio che a
sarà uguale a gH5S
e così via, e alla fine riceveremo un lungo testo di parole senza senso, e in più avremo una crittografia RSA prima che venga inviata .
Capisco, l'hacker dopo aver decrittografato i dati RSA può dividere il testo in pezzi che si ripetono come gH5S
ma ci sono molti caratteri usati, come può sapere quale divisione è quale personaggio? Ha bisogno di indovinare le parole e in qualche modo essere sicuro, e ci sono un sacco di possibilità per costruire parole.
C'è un semplice programma di esempio in Java per spiegare questo:
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());
}
}
L'array replacements
, il primo indice è a
e l'ultimo è z
in base all'ordine.
E questo è l'output:
zH4eDzfhACz98ACz98azS6DlKi89ab98lKi89FszXFeDzfhabK98ACz98ACz98puEzlKi89ACz98ab98a5568eDzfhlKi89fdXRSazS6DlKi89ZcfZSFszXFazS6DiLz5FszXFabK98loW91lKi89abK98ZmKuJhdZdgblKi89HGD3xeDzfhlKi89azS6DZmKuJlKi89rXzFttXfdXRSabK98aRfXZa5568eDzfhdWtQYaRfXZzH4abK98ZmKuJiLz5eDzfh
È un metodo sbagliato? può essere facilmente decodificato spiando i dati? Come?