import random
def encrypt(plaintext, offset):
ciphertext = ''
for char in plaintext:
if not char.isalpha():
ciphertext += char
continue
if char.isupper():
ciphertext += chr((ord(char) + offset - 65) % 26 + 65)
else:
ciphertext += chr((ord(char) + offset - 97) % 26 + 97)
return ciphertext
def decrypt(ciphertext, offset):
plaintext = ''
for char in ciphertext:
if not char.isalpha():
plaintext += char
continue
if char.isupper():
plaintext += chr((ord(char) - offset - 65) % 26 + 65)
else:
plaintext += chr((ord(char) - offset - 97) % 26 + 97)
return plaintext
while True:
resp = input("Do you want to (e)ncode or (d)ecode? [e/d]:")
if resp not in ["e", "d"]:
continue
break
mode_encrypt = True
if resp == "d":
mode_encrypt = False
while True:
resp = input("Do you want to use a random key? [y/n]:")
if resp not in ["y", "n"]:
continue
break
if resp == "y":
key = random.randrange(1,25)
print('random key value :', key)
else:
while True:
try:
key = int(input("What key would you like to use? Enter a number between 1 and 25:"))
except:
print('input is not an integer')
continue
if key < 1 or key > 25:
print("Invalid key")
continue
break
if mode_encrypt:
plaintext = input("Enter your plaintext:")
print('plaintext :', plaintext)
ciphertext = encrypt(plaintext, key)
print('ciphertext :', ciphertext)
else:
ciphertext = input("Enter your ciphertext:")
print('ciphertext :', ciphertext)
plaintext = decrypt(ciphertext, key)
print('plaintext :', plaintext)
Comments