#!/usr/bin/python3 # -*- coding: utf-8 -*- # Transposition Cipher Test # https://www.nostarch.com/crackingcodes (BSD Licensed) import random, sys, transpositionEncrypt, transpositionDecrypt def main() -> None: random.seed(42) # set the random "seed" to a static value for i in range(20): # run 20 tests # Generate random messages to test. # The message will have a random length: message = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" * random.randint(4, 40) # Convert the message string to a list to shuffle it. message_array = list(message) random.shuffle(message_array) message = "".join(message_array) # convert list to string print('Test #%s: "%s..."' % (i + 1, message[:50])) # Check all possible keys for each message. for key in range(1, int(len(message) / 2)): encrypted = transpositionEncrypt.encryptMessage(key, message) print(encrypted) decrypted = transpositionDecrypt.decryptMessage(key, encrypted) # If the decryption doesn't match the original message, display # an error message and quit. if message != decrypted and message != encrypted: print("Mismatch with key %s and message %s." % (key, message)) print("Decrypted as: " + decrypted) sys.exit() print("Transposition cipher test passed.") # If transpositionTest.py is run (instead of imported as a module) call # the main() function. if __name__ == "__main__": main()