コード例 #1
0
 def test_method(self):
     message1   = 'the quick brown fox lept over the lazy dog'
     e_message  = 'xcrxxtehadxhuxwoeoxxygtqkoflxrezoeibnxpvtlxx'
     ee_message = 'rhuotloxxxaxxqxepxxdwxkrivxxtxoyoebtcehegfznl'
     dmessage  = 'thexquickxbrownxfoxxleptxoverxthexlazyxdogxx'
     key11      = 'king'
     key12      = 'queen'
     assert(transposition.encrypt(message1, key11, None)    == e_message)
     assert(transposition.decrypt(e_message, key11, None)   == dmessage)
     assert(transposition.encrypt(message1, key11, key12)   == ee_message)
     assert(transposition.decrypt(ee_message, key11, key12) == dmessage)
コード例 #2
0
def main():
	random.seed(42)

	# test 20 times
	for i in range(20):
		# 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 = transposition.encrypt(message, key)
			decrypted = transposition.decrypt(encrypted, key)

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

	print('Transposition cipher test passed.')
コード例 #3
0
def hackTransposition(message):
    print('Hacking...')

    # Brute force time!
    for key in range(1, len(message)):
        print('Trying key #%s..' % (key))

        decryptedText = transposition.decrypt(message, key)

        if detectEnglish.isEnglish(decryptedText):
            print('\nPossible encryption hack:')
            print('Key %s: "%s"' % (key, decryptedText[:50]))
            response = raw_input('Enter D for done, or ENTER to continue: ')
            if response == 'D':
                return decryptedText
    # If loop finishes
    return None
コード例 #4
0
def main():

    for i in range(10):  # Amount of tests

        string = random_string()
        key = random.randint(1, 50)
        print('Test #%s: String: "%s.." Key: %s' % (i + 1, string[:50], key))

        encrypted = transposition.encrypt(string, key)
        decrypted = transposition.decrypt(encrypted, key)

        # If decrypted message is not the same as original
        if string != decrypted:
            print('ERROR: Decrypted: "%s"  Key: %s' % (decrypted, key))
            sys.exit()

    print('Transposition cipher test passed.')
コード例 #5
0
def main():

    for i in range(10): # Amount of tests

        string = random_string()
        key = random.randint(1, 50)
        print ('Test #%s: String: "%s.." Key: %s' % (i + 1, string[:50], key))

        encrypted = transposition.encrypt(string, key)
        decrypted = transposition.decrypt(encrypted, key)

        # If decrypted message is not the same as original
        if string != decrypted:
            print('ERROR: Decrypted: "%s"  Key: %s' % (decrypted, key))
            sys.exit()

    print('Transposition cipher test passed.')
コード例 #6
0
def hackTransposition(message):
    print('Hacking...')

    # Brute force time!
    for key in range(1, len(message)):
        print('Trying key #%s..' % (key))

        decryptedText = transposition.decrypt(message, key)

        if detectEnglish.isEnglish(decryptedText):
            print('\nPossible encryption hack:')
            print('Key %s: "%s"' % (key, decryptedText[:50]))
            response = raw_input('Enter D for done, or ENTER to continue: ')
            if response == 'D':
                return decryptedText
    # If loop finishes
    return None
コード例 #7
0
from transposition import decrypt

msg = "aeeeiywvyhhil  nnoiicoevwagdtuloh reasusarllokeay y i  epn dsi uncbnaoys fwpioettwogc h nd  hsusotomgeap   hdh a   swwlk"
for x in range(1,len(msg)):
    print("Trying key #{}: {}".format(x,decrypt(x,msg)[:55]+"..."))
コード例 #8
0
from transposition import decrypt
from detectEnglish import is_english

msg = "aeeeiywvyhhil  nnoiicoevwagdtuloh reasusarllokeay y i  epn dsi uncbnaoys fwpioettwogc h nd  hsusotomgeap   hdh a   swwlk"
for key in range(1,len(msg)):
    decryption = decrypt(key,msg)
    print("Trying key #{}: {}".format(key,decryption[:55]+"..."))
    if is_english(decryption):
        choice = input("Found potential solution with key {}, enter 'X' to exit or just press Enter to continue: ".format(key))
        if choice.upper() == 'X':
            print("Ending.  The selected key is {}".format(key))
            print("The selected solution is: \n{}".format(decryption))
            break
コード例 #9
0
def test_file_roundtrip(filename, key):
    original = Path(filename).read_text()
    round_trip = decrypt(encrypt(original, key), key)
    assert original == round_trip
コード例 #10
0
def test_decrypt(message, key, expected):
    assert decrypt(message, key) == expected
import transposition

#highscore
high = 0

correct_key = 2

#reads secret.txt

fileObj = open("secret.txt", "r")

ciphertext = fileObj.read()

for key in range(2, len(ciphertext)):

    message = transposition.decrypt(key, ciphertext)

    score = theseconddetectenglish.getEnglishCount(message)

    if score > high:

        high = score

        correct_key = key

    print("Key", key, "of", len(ciphertext), ":", score)

decrypted = transposition.decrypt(correct_key, ciphertext)

fileObj = open("secret.decrypted.txt", "w")
コード例 #12
0
def hack(message):
    for key in range(1, len(message)):
        decrypted_text = decrypt(message, key)

        if is_english(decrypted_text):
            return decrypted_text, key
コード例 #13
0
def main():
    answer = input(
        'Would you like to perform a cipher operation? Enter y/n.\n')
    while answer.lower() == 'y':
        print('1.) Caesar Cipher')
        print('2.) Transposition Cipher')
        print('3.) Classic Vigenere Cipher')
        print('4.) Modified Vigenere Cipher')
        print('5.) View Modified Vigenere Keys')
        print('0.) Exit')
        cipherChoice = input('Enter an option 0-5.\n')
        while not ((cipherChoice).isdigit() and int(cipherChoice) >= 0
                   and int(cipherChoice) <= 5):
            cipherChoice = str(
                input('\nInvalid entry. Enter an integer from 0-5.\n'))

        print('Your choice was', cipherChoice)
        cipherChoice = int(cipherChoice)

        if cipherChoice != 0 and cipherChoice != 5:
            mode = input('Would you like to encrypt or decrypt? Enter e/d.\n')
            while not (mode.lower() == 'e' or mode.lower() == 'd'):
                mode = input(
                    'Invalid entry. Enter e to encrypt or d to decrypt.\n')

        if cipherChoice == 1:
            print('Caesar Cipher:')
            n = input('Enter the shift value n:\n')
            while not n.isdigit():
                n = input('Enter a valid integer.\n')
            n = int(n)

            if mode == 'd':
                ciphertext = input('Enter the ciphertext.\n')
                plaintext = (caesar.decrypt(n, ciphertext))
                print('Ciphertext:\n', ciphertext)
                print('Plaintext:\n', plaintext)

            elif mode == 'e':
                plaintext = input('Enter the plaintext.\n')
                ciphertext = (caesar.encrypt(n, plaintext))
                print('Plaintext:\n', plaintext)
                print('Ciphertext:\n', ciphertext)

        elif cipherChoice == 2:
            print('Transposition Cipher:')
            key = input('Enter an integer key\n')
            while not key.isdigit():
                key = input('Key must be an integer.\n')
            key = int(key)

            if mode == 'd':
                ciphertext = input('Enter the ciphertext.\n')
                plaintext = trans.decrypt(key, ciphertext)
                print('Ciphertext:\n', ciphertext)
                print('Plaintext:\n', plaintext)
            elif mode == 'e':
                plaintext = input('Enter the plaintext.\n')
                ciphertext = trans.encrypt(key, plaintext)
                print('Plaintext:\n', plaintext)
                print('Ciphertext:\n', ciphertext)

        elif cipherChoice == 3:
            print('Classic Vigenere Cipher:')
            key = input('Enter a key:\n')

            if mode == 'd':
                ciphertext = input('Enter the ciphertext.\n')
                plaintext = vig.decrypt(ciphertext, key)
                print('Ciphertext:\n', ciphertext)
                print('Plaintext:\n', plaintext)
            elif mode == 'e':
                plaintext = input('Enter the plaintext.\n')
                ciphertext = vig.encrypt(plaintext, key)
                print('Plaintext:\n', plaintext)
                print('Ciphertext:\n', ciphertext)

        elif cipherChoice == 4:
            print('Modified Vigenere Cipher:')
            seed = input('Enter a positive seed value:\n')
            while not seed.isdigit():
                seed = input('Error, seed value must be a positive integer.\n')
            while int(seed) <= 0:
                print(
                    'Error, seed value must be positive. Exiting to main menu.'
                )
                break
            seed = int(seed)
            key = input('Enter a key:\n')

            if mode == 'd':
                ciphertext = input('Enter the ciphertext.\n')
                plaintext = mvig.decrypt(ciphertext, key, seed)
                print('Ciphertext:\n', ciphertext)
                print('Plaintext:\n', plaintext)
            elif mode == 'e':
                plaintext = input('Enter the plaintext.\n')
                ciphertext = mvig.encrypt(plaintext, key, seed)
                print('Plaintext:\n', plaintext)
                print('Ciphertext:\n', ciphertext)

        elif cipherChoice == 5:
            print('Modified Vigenere Keys:')
            seed = input('Enter a positive seed value:\n')
            while not seed.isdigit():
                seed = input('Error, seed value must be a positive integer.\n')
            while int(seed) <= 0:
                print(
                    'Error, seed value must be positive. Exiting to main menu.'
                )
                break
            seed = int(seed)
            key = input('Enter a key:\n')
            message = input('Enter a message:\n')

            print('Entered key:', key)
            key = mvig.getNewKey(seed, key, len(message))
            print('Used key:', key)

        elif cipherChoice == 0:
            print('Exiting now.')
            exit()