Пример #1
0
    def test_03_generate_key(self):
        playfair_key = PlayFairKey()

        # when invalid keying material supplied, don't set keying material
        with self.assertRaises(ValueError):
            playfair_key.generate_key("Invalid KEY!")
        self.assertIsNone(playfair_key._keying_material)

        # check function sets correct key and keying_material values
        self.assertEqual(playfair_key._keying_material, None)
        playfair_key.generate_key("example key example ij")
        self.assertEqual(playfair_key._keying_material, "examplekeyexamplei")
        self.assertEqual(playfair_key._key, "examplkyibcdfghnoqrstuvwz")

        # check that the tableaus are correct
        tableau_row = [
            ["e", "x", "a", "m", "p"],
            ["l", "k", "y", "i", "b"],
            ["c", "d", "f", "g", "h"],
            ["n", "o", "q", "r", "s"],
            ["t", "u", "v", "w", "z"],
        ]
        self.assertEqual(playfair_key._tableau_row, tableau_row)
        tableau_col = [
            ["e", "l", "c", "n", "t"],
            ["x", "k", "d", "o", "u"],
            ["a", "y", "f", "q", "v"],
            ["m", "i", "g", "r", "w"],
            ["p", "b", "h", "s", "z"],
        ]
        self.assertEqual(playfair_key._tableau_col, tableau_col)
Пример #2
0
    def test_08_print_tableau(self):
        playfair_key = PlayFairKey()

        # when generate_key hasn't been called, the tableau can't be printed
        with self.assertRaises(ValueError):
            playfair_key.print_tableau()

        # after a key is generated, calls to print_tableau shouldn't fail
        playfair_key.generate_key("")
        playfair_key.print_tableau()
        playfair_key.generate_key("playfair example")
        playfair_key.print_tableau()
Пример #3
0
    def test_10_char_location(self):
        playfair_key = PlayFairKey()
        playfair_key.generate_key("abcde")

        # first char
        cl = playfair_key.char_location("a")
        self.assertEqual(cl.row, 0)
        self.assertEqual(cl.col, 0)

        # char at the end of the first row
        cl = playfair_key.char_location("e")
        self.assertEqual(cl.row, 0)
        self.assertEqual(cl.col, 4)

        # char at the center of the second row
        cl = playfair_key.char_location("h")
        self.assertEqual(cl.row, 1)
        self.assertEqual(cl.col, 2)
Пример #4
0
    def test_09_key_valid(self):
        playfair_key = PlayFairKey()

        # initially, the key should be invalid
        self.assertFalse(playfair_key.valid)

        # when a (valid) key is generated, it should be valid
        playfair_key.generate_key("asdf")
        self.assertTrue(playfair_key.valid)

        # if another (valid) key is generated, it should still be valid
        playfair_key.generate_key("qwerty")
        self.assertTrue(playfair_key.valid)

        # if then an invalid key is generated, it should be invalid
        with self.assertRaises(ValueError):  # invalid key generates exception
            playfair_key.generate_key("invalid!")
        self.assertFalse(playfair_key.valid)