· 6 years ago · Mar 06, 2019, 05:02 AM
1# Import the modules
2import sys
3
4while True:
5 userchoice = input("Encrypt or Decrypt [Enter to quit]?").upper()
6 if userchoice.startswith("E"):
7 prompt = "What is the plaintext to encrypt?"
8 elif userchoice.startswith("D"):
9 prompt = "What is the ciphertext to decrypt?"
10 else:
11 sys.exit()
12
13 beforetext = input(prompt).upper()
14 if beforetext == "":
15 sys.exit()
16
17 secretkey=""
18 while len(secretkey)<5:
19 secretkey = input("What is the secretkey (min of 5 characters)?").upper()
20 order = []
21 if (secretkey.isdigit()):
22 for el in secretkey:
23 if (secretkey.count(el)>1):
24 print("Invalid Key")
25 sys.exit()
26 order.append(el)
27 else:
28 tempSecret = list(secretkey)
29 tempKey = list(tempSecret)
30 tempKey.sort()
31 #tempKey.reverse()
32 for el in tempKey:
33 order.append(tempSecret.index(el))
34 tempSecret[tempSecret.index(el)] = "."
35 textGrid = []
36 aftertext = ""
37 tempText = ""
38 for letter in beforetext.upper():
39 if letter.isalpha():
40 tempText += letter
41 elif letter.isspace():
42 pass
43 else:
44 print ("Invalid character skipped: ", letter)
45 while (len(tempText)%len(secretkey) != 0):
46 tempText += "X" #chr(random.randint(65,90))
47 while(len(tempText) > 0):
48 textGrid.append(list(tempText[:len(secretkey)]))
49 tempText = tempText[len(secretkey):]
50 #print (order)
51 aftertext = ""
52 if userchoice.startswith("E"):
53 for mycol in range(0,len(order)):
54 for myrow in range(0,len(textGrid)):
55 aftertext += textGrid[myrow][order[mycol]]
56 else:
57 tempGrid = textGrid
58 cnum = 0
59 for mycol in range(0,len(order)):
60 for myrow in range(0,len(textGrid)):
61 tempGrid[myrow][order[mycol]] = beforetext[cnum]
62 cnum += 1
63 for myrow in range(0,len(tempGrid)):
64 for mycol in range(0,len(order)):
65 aftertext += tempGrid[myrow][mycol]
66
67 print (beforetext," => ",aftertext)