import string
import random
def generate_key():
letters = list(string.ascii_letters)
alpha_length = len(string.ascii_letters)
for i in range(0,alpha_length):
r = i
r2 = random.randint(0,alpha_length-1)
temp = letters[r]
letters[r] = letters[r2]
letters[r2] = temp
return ''.join(letters)
def create_map(word_length):
rows = []
for i in range(0,word_length):
key = generate_key()
rows.append(key)
return rows
def stevencode(plaintext,key):
words = plaintext.split(' ')
encrypted = ""
for i in range(0,len(words)):
word = words[i]
for j in range(0,len(word)):
c = word[j]
if c in string.ascii_letters:
idx = string.ascii_letters.index(c)
encrypted += key[i][idx]
else:
encrypted += c
encrypted += " "
return encrypted[:-1]
def stevendecode(ciphertext,key):
words = ciphertext.split(' ')
decrypted = ""
for i in range(0,len(words)):
word = words[i]
for j in range(0,len(word)):
c = word[j]
if c in string.ascii_letters:
decrypted += string.ascii_letters[key[i].index(c)]
else:
decrypted += c
decrypted += " "
return decrypted[:-1]
plaintext = input("Enter string to encrypt: ")
word_count = len(plaintext.split(' '))
key = create_map(word_count)
crypt = stevencode(plaintext,key)
decrypt = stevendecode(crypt,key)
print("Plaintext:" + plaintext)
print("Encrypted:" + crypt);
print("Decrypted:" + decrypt);