Sto provando a implementare un attacco Meet-in-the-Middle e, solo per testarlo, ho apportato alcune codifiche di valori, che è semplicemente questo blocco di codice semplice:
byte[] key1 = new byte[] { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte[] key2 = new byte[] { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
string p1 = "Hello Dear World";
string p2 = "Hello Evil World";
//SimpleDES is just a C# implementation of DES that I've wrapped in its own class
SimpleDES des1 = new SimpleDES(key1);
SimpleDES des2 = new SimpleDES(key2);
byte[] toEncrypt1 = Encoding.ASCII.GetBytes(p1);
c1 = Convert.ToBase64String(des2.Encrypt(des1.Encrypt(toEncrypt1)));
byte[] toEncrypt2 = Encoding.ASCII.GetBytes(p2);
c2 = Convert.ToBase64String(des2.Encrypt(des1.Encrypt(toEncrypt2)));
Lascerò altro codice, a meno che non sia richiesto da nessuno di voi.
Il problema è che date le semplici chiavi di test sopra e test di testo in chiaro, sto ottenendo diverse coppie di chiavi che quando vengono crittografate con key1 e quindi key2 restituisce lo stesso testo cifrato.
C'è qualcosa di ovvio, da quello che ho dichiarato finora, che lo spiega, o ho bisogno di guardare più da vicino il mio codice di forza bruta.
È causato dalla chiave breve che sto usando?