Пример #1
0
 def setUpClass(cls):
     cls._playfair_key = PlayFairKey()
     cls._playfair_key.generate_key("asdf")
     # setup the playfair_key class
     cls._playfair_key._substitute_char = "j"
     cls._playfair_key._substitute_by = "i"
     cls._playfair_key._padding_char = "x"
Пример #2
0
    def test_05_substitute_char(self):
        playfair_key = PlayFairKey()

        # get default substitute-char and -by
        default_char = playfair_key.substitute_char
        default_by = playfair_key.substitute_by

        # test invalid substitute_char
        with self.assertRaises(ValueError):
            playfair_key.substitute_char = "A"
        with self.assertRaises(ValueError):
            playfair_key.substitute_char = default_by
        self.assertEqual(playfair_key.substitute_char, default_char)

        # test valid substitute_char
        playfair_key.substitute_char = "a"
        self.assertEqual(playfair_key.substitute_char, "a")
Пример #3
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)
Пример #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)
Пример #5
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)
Пример #6
0
 def setUpClass(cls):
     cls.playfair_key = PlayFairKey()
     cls.playfair_key.generate_key("abcde")
Пример #7
0
    def test_04_is_single_lowercase_char(self):
        playfair_key = PlayFairKey()

        # supply some in valid chars
        with self.assertRaises(ValueError):
            playfair_key._is_single_lowercase_char("A")
        with self.assertRaises(ValueError):
            playfair_key._is_single_lowercase_char("!")
        with self.assertRaises(ValueError):
            playfair_key._is_single_lowercase_char("1")
        with self.assertRaises(ValueError):
            playfair_key._is_single_lowercase_char("aa")

        # supply some valid chars
        self.assertTrue(playfair_key._is_single_lowercase_char("a"))
        self.assertTrue(playfair_key._is_single_lowercase_char("z"))
Пример #8
0
 def test_01_create_playfair_key_instance(self):
     playfair_key = PlayFairKey()
     self.assertIsNotNone(playfair_key)
Пример #9
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()
Пример #10
0
    def test_02_validate_keying_material(self):
        playfair_key = PlayFairKey()

        # test wrong types supplied to the validate function
        with self.assertRaises(ValueError):
            playfair_key._validate_keying_material({})
        with self.assertRaises(ValueError):
            playfair_key._validate_keying_material([])
        with self.assertRaises(ValueError):
            playfair_key._validate_keying_material(PlayFairKey)

        # empty keying material shouldn't raise exception and return ""
        self.assertEqual(playfair_key._validate_keying_material(""), "")

        # ensure key can only use lowercase letters
        with self.assertRaises(ValueError):
            playfair_key._validate_keying_material("1")
        with self.assertRaises(ValueError):
            playfair_key._validate_keying_material("A")
        with self.assertRaises(ValueError):
            playfair_key._validate_keying_material(".")
        with self.assertRaises(ValueError):
            playfair_key._validate_keying_material("\n")

        self.assertEqual(playfair_key._validate_keying_material("a"), "a")
        self.assertEqual(playfair_key._validate_keying_material("z"), "z")
        letters_and_space = "abcdefghijklmnopqrstuvwxyz "
        letters = "abcdefghiklmnopqrstuvwxyz"  # note, without substitute char
        self.assertEqual(
            playfair_key._validate_keying_material(letters_and_space), letters)