the-honk/gcse computer science/year 9/encryption/Enkodo Cipher.py

65 lines
2.3 KiB
Python
Raw Normal View History

2024-10-09 17:02:27 +00:00
import math
import string
import re
def encryptChar(char, key):
# check if the character is a letter
if re.match('^[a-zA-Z]*$', char):
# figure out the position of the character in the alphabet
position = string.ascii_lowercase.index(char.lower()) + 1
# encrypt the character
return math.ceil((position ** 2) + int(key))
# if the character is not a letter, just return it
else:
return char
def encrypt(text, key):
# split the string into a list of characters and replace spaces with ||
characters = [w.replace(' ', '||') for w in [char for char in text]]
# encrypt the message and return it
return ' '.join(map(str, [encryptChar(x, key) for x in characters]))
def decryptChar(char, key):
# check if the character is a number
if re.match('^[0-9]*$', char):
# create a dictionary with all of the lower case letters
d = dict(enumerate(string.ascii_lowercase, 1))
# return the letter in the index of the resulting number
return d[math.sqrt(int(char) - int(key))]
# return || as a space
if char == '||':
return ' '
# if the character is not a number or ||, just return it
else: return char
def decrypt(text, key):
# split the string into a list
characters = text.split()
# decrypt the message and return it
return ''.join([decryptChar(x, key) for x in characters])
def menu():
inp = input('Welcome to Enkodo!\nWhat would you like to do?\n\n1) Encrypt a message\n2) Decrypt a code\n3) Exit\nYour choice: ')
if inp == '1':
msg = input('\nPlease input the message you would like to encrypt:\n')
key = input('\nPlease provide a key to encrypt that with.\n')
encrypted = encrypt(msg, key)
print('\nYour message has been successfully encrypted. Here it is!\n')
print(encrypted)
exit()
if inp == '2':
code = input('\nPlease input the code you would like to decrypt:\n')
key = input('\nWhat was the key the code was encrypted with?\n')
decrypted = decrypt(code, key)
print('\nYour message has been successfully decrypted. Here it is!\n')
print(decrypted)
exit()
if inp == '3':
print('\nGoodbye!')
exit()
menu()