public void CheckFiveAWithRingBGivesCorrectOutput() { //With the rotors I, II, III (from left to right), wide B-reflector, all ring settings in B-position, and start position AAA, typing AAAAA will produce the encoded sequence EWTYX. Scrambler3 s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.B, Letters.A), Rotor.RotorII(Letters.B, Letters.A), Rotor.RotorIII(Letters.B, Letters.A)); Letters l; l = s.GetOutput(Letters.A); Assert.That(l, Is.EqualTo(Letters.E)); l = s.GetOutput(Letters.A); Assert.That(l, Is.EqualTo(Letters.W)); l = s.GetOutput(Letters.A); Assert.That(l, Is.EqualTo(Letters.T)); l = s.GetOutput(Letters.A); Assert.That(l, Is.EqualTo(Letters.Y)); l = s.GetOutput(Letters.A); Assert.That(l, Is.EqualTo(Letters.X)); }
public void CheckGandPReverseWithSameStartingConfiguration() { Scrambler s; Letters l; s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.Z)); l = s.GetOutput(Letters.G); Assert.That(l, Is.EqualTo(Letters.P)); s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.Z)); l = s.GetOutput(Letters.P); Assert.That(l, Is.EqualTo(Letters.G)); }
public void CheckEncypheredMessageDecyphers() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("THISISMYTESTMESSAGE"); Letters[] cyphertext = LetterMapper.CreateLettersArray("OPGNDXOEHCJEXBEDDUO"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public void CheckEncypheredMessageDecyphersWithRolloverAndRingF() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.F, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("THISMESSAGEWILLCAUSEROLLOVER"); Letters[] cyphertext = LetterMapper.CreateLettersArray("UFVWRFXPGFNQBAPWSVNSFXOGCPPK"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public void CheckEncypheredMessageDecyphersWithMoreRollover() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("BAUSSRLQONWLBSZPPAORUKKJPRUYZNOLRKKHFMLJRAVSPOJVTPGHRBLEPRVPZMZYNTBWBISKQUBDWIENKKPHHDZIXBUSROMKSBITTAKICWDIFWPINAMXTHWOOQWZWCEIPGKDRMIGIVRSLCEQGHGKXLCXARNZXWGJSICHWOVIUGPLUVNYYQLOONRJJRQNPSIHYMQXXMUOEEKQPVUFLCPUFFJLFWIDHTVBHFHLCJMKWYZWPJHCOBHYXJEOKOSHCMABEVUNHEFYBMFPQPHVQPLFSYFNESRLWBOIBUEMZHLAZFRJEYGVTSCZTKRTRVOLZEFNZPCYDPCNIYQEEJBNWWXSXSRIYAIVFOUVMBOGQZVWMPYVOAUBIOZWFZVVLGKMCOZMWCSCOXWNJRPPVVUUPRURVIWXIATKFHUTXJSNMHCQLKGTTKAFBTORKWHTUCMTXQJFKORXORVINKXGUNCALBJQHQQEWFCQQMBJYWFAWVSZSMFLHUBZEQYEGPBAXMNYVKJBXRMTLBVZTHPQBRPPSFMQRDLJLVUYUHQRYTEUURQSOGYUAEIJQMXSXFJFTLSOPYJLULMGJGXYBPVJHZAGFIBEPUKKEJMVQMGQMKFMZKXGRKGTSYAZLPUDRRWSOHWC"); Letters[] cyphertext = LetterMapper.CreateLettersArray("ADFNBTUOMHCRANIBRLEVTHRCQJCBVYGUEOMGUKCDTSUQJCUUOFNEKPBXHMQJKEUIXENMCLAHIWCCTJMSETLDMZWJWIYCCNWUHHHFNBWMBITTGETBVFAFRWUTYMQUPZHHRRHYWEJTBAMKJLILXFAZKDHVLDCXMUXDIQKUAXMUXRFYRDWKFFFHFAAQBKLTJNLBRQYUMXDAQZUDTGWGRGITLHPXPDMVOMDWOVBMKRGTRXUKNEDMNILPHYGNJJVOPXZRPRWAQSXERTQVXFPXVVZNTVXAYKLMVUEYZGQOLQSBEVYLRFOQSDUUMLPKAXLWRNBCMCNEFQMERXFIDSNGLBAMVBYOFVUOGNTOLSFKCROCEGOELRWSZTHDNHHISITKKDDUVEKLLDEGCPHWERBOLVTPQQVFBHDDYDSFDYKQLQTCJBUQYGVHVMSOOEDCEUBBPFQPGNIMTTZNSNDTFPMCODOLRZKXHBNTDTQYDNVZZBATJVLQVSVBGVEDBRWQAQUUPTTDPSGZJUWXVOUHNWQMQXHZABKGNUVPELJHVGORJXDYDFINOOYQAFKYORUPEBKNSCOARUUTSAGLWGILXMEPXDYJMSHXQOQRNAQYVJTETTZZPTQUEXYREZOXJTFCJNPK"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public void CheckEncypheredMessageDecyphersWithRollover() { Scrambler s = new Scrambler3(Reflector.ReflectorB(), Rotor.RotorI(Letters.A, Letters.A), Rotor.RotorII(Letters.A, Letters.A), Rotor.RotorIII(Letters.A, Letters.A)); Letters[] expectedPlaintext = LetterMapper.CreateLettersArray("THISISALONGMESSAGETOTESTROLLOVERINTHEROTORS"); Letters[] cyphertext = LetterMapper.CreateLettersArray("OPGNDXCGMHUNLNECJZGJUPLWOVMOJFUJWQXGSUDEJVY"); Letters[] plaintext = new Letters[cyphertext.Length]; for (int i = 0; i < cyphertext.Length; i++) { plaintext[i] = s.GetOutput(cyphertext[i]); } Assert.That(plaintext, Is.EqualTo(expectedPlaintext)); }
public Letters GetOutput(Letters input) { Letters output = m_scrambler.GetOutput(input); return(output); }