Advertisement
MyriadCx

Python Task 3 Double Keyword encryption and Text files

Jun 26th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.13 KB | None | 0 0
  1. from tkinter import Tk
  2. from tkinter.filedialog import askopenfilename
  3. run = 'yes'
  4.  
  5. while run == 'yes':
  6.  
  7.     print("This program will only process alphabetic text")
  8.  
  9.     def getMode():
  10.         while True:
  11.             print("Do you wish to encrypt[1] or decrypt[2]")
  12.             mode = input("Please enter '1' or '2': ")
  13.             if mode == '1' or mode == '2':
  14.                 return mode
  15.             else:
  16.                 print("Invalid")
  17.            
  18.  
  19.  
  20.  
  21.     def getMessage():
  22.         message = ''
  23.         while True:
  24.             message = input("Type '@' to open file browser and select text file or type message here: ").upper()
  25.             if message != '@':
  26.                 filepath = ''
  27.                 print("Your message is", message)
  28.                 return (message, filepath)
  29.             else:
  30.                 try:
  31.                     Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
  32.                     print("Please select the text file you wish to use")
  33.                     filepath = askopenfilename()
  34.                     print(filepath)
  35.                     file = open(filepath, 'r')
  36.                     message = file.read().upper()
  37.                     return (message, filepath)
  38.                 except:
  39.                     print("Error reading text file")
  40.                
  41.        
  42.  
  43.  
  44.  
  45.     def keyword():
  46.         while True:
  47.             keyword = input(keywordAttempt + " keyword: ")
  48.             if keyword.isalpha() == True:
  49.                 print(keywordAttempt, "keyword accepted!")
  50.                 return keyword
  51.             else:
  52.                 print(keywordAttempt, "keyword invalid, try again")
  53.  
  54.  
  55.     def makeList(letterList, keyword):
  56.         counter = 0
  57.         for char in keyword:
  58.             letter = keyword[counter]
  59.             letterList.append(letter)
  60.             counter += 1
  61.         return letterList
  62.  
  63.     def crypt():
  64.         newMessage = ''
  65.         counter = 0
  66.         counter2 = 0
  67.         for char in message:
  68.             if char.isalpha():
  69.                 num = ord(char)
  70.                 num2 = ord(letterList[counter])
  71.                 num3 = ord(letterList2[counter2])
  72.                 if mode == '1':
  73.                     newNum = num + num2 + num3 - 128
  74.                 elif mode == '2':
  75.                     newNum = num - num2 - num3 + 128
  76.                 while newNum > ord('Z'):
  77.                     newNum -= 26
  78.                 while newNum < ord('A'):
  79.                     newNum += 26
  80.                 newChar = chr(newNum)
  81.                 newMessage += newChar
  82.                 counter += 1
  83.                 counter2 +=1
  84.                 if counter == len(userKeyword):
  85.                     counter = 0
  86.                 else:
  87.                     counter = counter
  88.                 if counter2 == len(userKeyword2):
  89.                     counter2 = 0
  90.                 else:
  91.                     counter = counter
  92.             else:
  93.                 newMessage += char
  94.         return newMessage
  95.  
  96.     def runagain():
  97.         while True:
  98.             run = input("Would you like to run the program again? Enter 'yes' or 'no': ")
  99.             if run == 'no':
  100.                 print("Bye")
  101.                 return run
  102.             elif run == 'yes':
  103.                 return run
  104.             else:
  105.                 print(run, "is invalid, try again")
  106.  
  107.        
  108.     mode = getMode()
  109.     (message, filepath) = getMessage()
  110.     if message != '':
  111.         keywordAttempt = 'First'
  112.         userKeyword = keyword()
  113.         keywordAttempt = 'Seconed'
  114.         userKeyword2 = keyword()
  115.         letterList = []
  116.         letterList2 = []
  117.  
  118.         letterList = makeList(letterList, userKeyword)
  119.         letterList2 = makeList(letterList2, userKeyword2)
  120.         newMessage = crypt()
  121.         if filepath != '':
  122.             file = open(filepath, 'w')
  123.             file.write(newMessage)
  124.             file.close()
  125.  
  126.         if mode == '1':
  127.             print("File has now been encrypted")
  128.         elif mode == '2':
  129.             print("File has now been decrypted")
  130.  
  131.         if filepath == '':
  132.             print(newMessage)
  133.     run = runagain()
  134.     input("Press enter\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement