Class-12-Project / encode.py
encode.py
Raw
import pickle
import base64
try:
    f = open(".pwd", "rb")
    password = pickle.load(f)
except IOError or EOFError:
    password = {}
    pass

pwd = "G!thuB"

def encode(string, key=pwd):
    encoded_chars = []
    for i in range(len(string)):
        key_c = key[i % len(key)]
        # ord() gives the respective ascii value
        encoded_c = chr(ord(string[i]) + ord(key_c) % 256)
        encoded_chars.append(encoded_c)
    encoded_string = "".join(encoded_chars)
    return base64.urlsafe_b64encode(encoded_string.encode()).decode()

def decode(string, key=pwd):
    decoded_chars = []
    # utf-8 to avoid character mapping errors
    string = base64.urlsafe_b64decode(string.encode()).decode()
    for i in range(len(string)):
        key_c = key[i % len(key)]
        encoded_c = chr(abs(ord(string[i]) - ord(key_c) % 256))
        decoded_chars.append(encoded_c)
    decoded_string = "".join(decoded_chars)
    return decoded_string