public CipherToolPage() { InitializeComponent(); _cipherMachine = new SubstitutionCipherMachine(_englishAlphabet); QuadgramDataset dataset = new QuadgramDataset(_englishAlphabet); Utils.ParseAndFill(dataset, "quadgrams_eng.txt"); _textFitnessCalculator = new TextFitnessCalculator(dataset); Random random = new Random(); TextBoxKey.Text = new string(TextBoxKey.Text.OrderBy(x => random.Next()).ToArray()); }
public SubstitutionCipherBreaker(HashSet <char> alphabet, TextFitnessCalculator fitnessCalculator, string encodedText) { _cipherMachine = new SubstitutionCipherMachine(alphabet); _fitnessCalculator = fitnessCalculator; _text = _cipherMachine.ClearTextAndGetExternalSymbols(encodedText, out _symbols); _textLength = _text.Length; _alphabetLength = alphabet.Count; _textArrayPool = ArrayPool <byte> .Create(_textLength, 10); _keyArrayPool = ArrayPool <byte> .Create(_alphabetLength, 1); _marksArrayPool = ArrayPool <bool> .Create(_alphabetLength, 1); _byteAlphabet = new HashSet <byte>(Enumerable.Range(0, _alphabetLength).Select(x => (byte)x).ToArray()); }