def test_cipher_creation(self): translate_from = string.ascii_lowercase translate_to = string.ascii_lowercase[1:] + string.ascii_lowercase[0] cipher_target = { l_from: l_to for l_from, l_to in zip(translate_from, translate_to) } cipher_generated = translator.create_cipher(string.ascii_lowercase, translate_to) self.assertDictEqual(cipher_target, cipher_generated)
def test_encipher(self): test_msg = "Klein testje, kijken of dit werkt." test_cipher = translator.create_cipher( string.ascii_lowercase, string.ascii_lowercase[1:] + string.ascii_lowercase[0]) encrypted_msg_truth = translator.decipher_text( test_msg, {v: k for k, v in test_cipher.items()}) encrypted_msg = translator.encipher_text(text=test_msg, cipher=test_cipher) self.assertEqual(encrypted_msg_truth, encrypted_msg)
def generate_possible_words(self, word_enc, cipher={}): """ A generator for the possibilities of an encoded word. This function will also determine the accompanying cipher and return it. :param word_enc: Encoded word :param cipher: Cipher used so far :return: generator for possible decodings along with the cipher for that """ processed_word = process_word(word_enc, self._character_set) possible_words = self.get_possible_words(processed_word, cipher) for word_dec in possible_words: cipher_for_this = create_cipher(processed_word, word_dec) yield word_dec, {**cipher_for_this, **cipher}
def create_random_cipher(character_set=string.ascii_lowercase): random_shuffle_characters = random.sample(character_set, len(character_set)) return create_cipher(character_set, random_shuffle_characters)
def create_random_cipher(character_set): random_shuffle_characters = random.sample(character_set, len(character_set)) return create_cipher(character_set, random_shuffle_characters)