Esempio n. 1
0
def main():
    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 = list(message)
        random.shuffle(message)
        message = ''.join(message) # Convert list to string

        print('Test #%s: "%s..."' % (i+1, message[:50]))

        # Check all possible keys for each message.
        for key in range(1, len(message)):
            encrypted = transEncrypt.encryptMessage(key, message)
            decrypted = transDecrypt.decryptMessage(key, encrypted)

            # If message and decrypted don't match, display an error message
            # and quit.

            if message != decrypted:
                print('Mismatch with key %s and message %s.' % (key, message))
                print(decrypted)

                sys.exit()

    print('Transposition cipher test passed.')
Esempio n. 2
0
def main():
    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 = list(message)
        random.shuffle(message)
        message = ''.join(message)  # Convert list to string

        print('Test #%s: "%s..."' % (i + 1, message[:50]))

        # Check all possible keys for each message.
        for key in range(1, len(message)):
            encrypted = transEncrypt.encryptMessage(key, message)
            decrypted = transDecrypt.decryptMessage(key, encrypted)

            # If message and decrypted don't match, display an error message
            # and quit.

            if message != decrypted:
                print('Mismatch with key %s and message %s.' % (key, message))
                print(decrypted)

                sys.exit()

    print('Transposition cipher test passed.')
Esempio n. 3
0
def main():
    inputFilename = input('File name: ')

    # Be careful. Tis will overwrite that file
    myMode = input('Encrypt or decrypt: ')
    myMode = myMode.lower()
    myKey = int(input('Key: '))

    # This sets the file name
    if myMode == 'encrypt':
        outputFilename = inputFilename[:len(inputFilename) - 4] + '.encrypted.txt'

    if myMode == 'decrypt':
        outputFilename = inputFilename[:len(inputFilename) - 4] + '.decrypted.txt'

    # If the file does not exist, terminate early
    if not os.path.exists(inputFilename):
        print('The file %s does not exist. Quitting...' % (inputFilename))
        sys.exit()

    # If the output file already exists, give the user a chance to quit.
    if os.path.exists(outputFilename):
        print('This will overwrite the file %s. (C)ontinue or (Q)uit?' % (outputFilename))
        response =  input('> ')
        if not response.lower().startswith('c'):
            sys.exit()

    # Read in the message from the input file
    fileObj = open(inputFilename)
    content = fileObj.read()
    fileObj.close()

    print('%sing...' % (myMode.title()))

    # Measure how long it takes
    startTime = time.time()
    if myMode == 'encrypt':
        translated = encryptMessage(myKey, content)
    elif myMode == 'decrypt':
        translated = decryptMessage(myKey, content)
    totalTime = round(time.time() - startTime, 2)
    print('%sion time: %s seconds' % (myMode.title(), totalTime))
    
    # write out the translated message to the output file.
    outputFileObj = open(outputFilename, 'w')
    outputFileObj.write(translated)
    outputFileObj.close()
    outputFilename = outputFilename

    print('Done %sing %s (%s characters).' % (myMode, inputFilename, len(content)))