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)
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.')
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
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.')
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.')
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]+"..."))
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
def test_file_roundtrip(filename, key): original = Path(filename).read_text() round_trip = decrypt(encrypt(original, key), key) assert original == round_trip
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")
def hack(message): for key in range(1, len(message)): decrypted_text = decrypt(message, key) if is_english(decrypted_text): return decrypted_text, key
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()