def test_punctuation(self): ''' AffineSubstitution (test_punctuation): punctuation should be unmodified ''' e = Affine(a=7, b=8) original = '!@$%%^&*()_-+={}[]|":;<>,./?' enciphered = e.encipher(original, keep_punct=True) self.assertEqual(original.upper(), enciphered.upper()) e = Affine(a=7, b=8) original = '!@$%%^&*()_-+={}[]|":;<>,./?' enciphered = e.encipher(original, keep_punct=False) self.assertEqual('', enciphered.upper())
def test_decipher(self): ''' AffineSubstitution (test_decipher): test known ciphertext->plaintext pairs ''' text = 'pmjgdaxurolifczwtqnkhebyvspmjgdaxurolifczwtqnkhebyvs' declist = [ 'yfmtahovcjqxelszgnubipwdkryfmtahovcjqxelszgnubipwdkr', 'onmlkjihgfedcbazyxwvutsrqponmlkjihgfedcbazyxwvutsrqp', 'jarizqhypgxofwnevmdulctkbsjarizqhypgxofwnevmdulctkbs', 'pmjgdaxurolifczwtqnkhebyvspmjgdaxurolifczwtqnkhebyvs', 'tmfyrkdwpibungzslexqjcvohatmfyrkdwpibungzslexqjcvoha', 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz' ] for i, key in enumerate( ((7, 3), (3, 25), (9, 12), (1, 0), (19, 18), (23, 15))): a, b = key dec = Affine(a, b).decipher(text) self.assertEqual(dec.upper(), declist[i].upper())
def test_encipher(self): ''' AffineSubstitution (test_encipher): test known plaintext->ciphertext pairs ''' text = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' enclist = [ 'hijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg', 'dgjmpsvybehknqtwzcfiloruxadgjmpsvybehknqtwzcfiloruxa', 'afkpuzejotydinsxchmrwbglqvafkpuzejotydinsxchmrwbglqv', 'ovcjqxelszgnubipwdkryfmtahovcjqxelszgnubipwdkryfmtah', 'sbktcludmvenwfoxgpyhqzirajsbktcludmvenwfoxgpyhqziraj', 'pmjgdaxurolifczwtqnkhebyvspmjgdaxurolifczwtqnkhebyvs' ] for i, key in enumerate( ((1, 7), (3, 3), (5, 0), (7, 14), (9, 18), (23, 15))): a, b = key enc = Affine(a, b).encipher(text) self.assertEqual(enc.upper(), enclist[i].upper())