public void Challenge3() { string input = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"; var expectedKey = (byte)88; var expectedString = "Cooking MC's like a pound of bacon"; var hexString = new HexString(input); var decryptor = new SingleByteXorCracker(new BigramCalculator()); var actualKey = decryptor.CrackKey(hexString); var decryptedBytes = XorUtil.Xor(hexString.Bytes.ToArray(), new[] { actualKey }); var actualString = System.Text.Encoding.ASCII.GetString(decryptedBytes); Assert.AreEqual(expectedKey, actualKey); Assert.AreEqual(expectedString, actualString); }
public void Callenge6() { var expectedString = "";//Set1Data.Challenge6Solution; var expectedKey = System.Text.Encoding.ASCII.GetBytes("Terminator X: Bring the noise"); var input = Set1Data.Challenge6Input.Replace("\r\n", string.Empty); var encryptedData = Convert.FromBase64String(input); var singleByteCracker = new SingleByteXorCracker(new BigramCalculator()); var cracker = new MultiByteXorCracker(singleByteCracker); var actualKey = cracker.CrackKey(encryptedData); var decryptedData = XorUtil.Xor(encryptedData, actualKey); var actualString = System.Text.Encoding.ASCII.GetString(decryptedData); Assert.AreEqual(expectedString, actualString); Assert.AreEqual(expectedKey, actualKey); }
public void Challenge4() { var expectedString = "Now that the party is jumping\n"; var expectedKey = 53; var strings = Set1Data.Challenge4Input.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); var hexStrings = strings.Select(s => new HexString(s)).ToArray(); ITextScoreCalculator textScoreCalculator = new BigramCalculator(); var cracker = new SingleByteXorCracker(textScoreCalculator); int index; var actualKey = cracker.CrackKey(hexStrings, out index); var decrytedBytes = XorUtil.Xor(hexStrings[index].Bytes.ToArray(), new[] { actualKey }); var actualString = System.Text.Encoding.ASCII.GetString(decrytedBytes); Assert.AreEqual(expectedString, actualString); Assert.AreEqual(expectedKey, actualKey); }