+class Set1Challenge4Tests(unittest.TestCase):
+ def test_gets_message(self):
+ with open('set1challenge4.txt','r') as f:
+ lines = f.readlines()
+
+
+ lowest_frequency_deviation_string = None
+ lowest_frequency_deviation = None
+
+ for line in lines:
+ line_bytes = bytes.fromhex(line)
+
+ for i in range(128):
+ key_char = bytes([i]).decode('utf-8')
+ key = bytes([i]) * len(line_bytes)
+
+ try:
+ try_string = xor_bytes(line_bytes, key).decode('utf-8')
+ try_string_frequency_deviation = compare_frequency_deviation(
+ SAMPLE_FREQUENCIES,
+ get_character_frequencies(try_string),
+ )
+
+ if lowest_frequency_deviation is None or try_string_frequency_deviation < lowest_frequency_deviation:
+ lowest_frequency_deviation_string = try_string
+ lowest_frequency_deviation = try_string_frequency_deviation
+ except:
+ pass
+
+ expected = 'Now that the party is jumping\n'
+ actual = lowest_frequency_deviation_string
+
+ self.assertEqual(expected, actual)
+