diff --git a/HOP 1.0.1.1.py b/HOP 1.0.2.py similarity index 93% rename from HOP 1.0.1.1.py rename to HOP 1.0.2.py index 682f9ce..651e0fc 100644 --- a/HOP 1.0.1.1.py +++ b/HOP 1.0.2.py @@ -1,153 +1,160 @@ -#Changelog: - #HOP Encode - #1.0: - #Released HOP Encode - #1.0.1: - #Updated version number - #Added optimize for Discord option - #Added changelog - #Hop Decode - #1.0: - #Released HOP decode - #1.0.1: - #Updated version number to match that of HOP Encode - #Added changelog - -import base64 -def decode(ciphertext, key): - steponel = list(ciphertext) - stepone = "" - for i in range(len(steponel)-1): - stepone=stepone+steponel[i] - steptwo = stepone.encode('utf-8') - steptwob = base64.a85decode(steptwo) - steptwoc = steptwob.decode('utf-8') - def vigenere_dec(cipher,key): - alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" - input_string = "" - dec_key = "" - dec_string = "" - dec_key = key - dec_key = dec_key.lower() - input_string = cipher - input_string = input_string.lower() - string_length = len(input_string) - expanded_key = dec_key - expanded_key_length = len(expanded_key) - while expanded_key_length < string_length: - expanded_key = expanded_key + dec_key - expanded_key_length = len(expanded_key) - key_position = 0 - for letter in input_string: - if letter in alphabet: - position = alphabet.find(letter) - key_character = expanded_key[key_position] - key_character_position = alphabet.find(key_character) - key_position = key_position + 1 - new_position = position - key_character_position - if new_position > 35: - new_position = new_position + 36 - new_character = alphabet[new_position] - dec_string = dec_string + new_character - else: - dec_string = dec_string + letter - return(dec_string) - def stepfour(stepthree): - stepthree=str(int(stepthree,36)) - test = list(stepthree) - if len(test)%3==1: - stepthree="00"+stepthree - if len(test)%3==2: - stepthree="0"+stepthree - stepthreel = list(stepthree) - stepfourl = [""]*int((float(len(stepthreel))/3)) - k = 0 - while k < len(stepthreel)-2: - stepfourl[int(k/3)] = stepthreel[k] + stepthreel[k+1] + stepthreel[k+2] - k = k + 3 - for j in range(len(stepfourl)): - temp = stepfourl[j] - temp = int(temp) - temp = chr(temp) - stepfourl[j] = temp - stepfour="" - for l in range(len(stepfourl)): - stepfour = stepfour + stepfourl[l] - return(stepfour) - stepthree = vigenere_dec(steptwoc, key) - stepfour = stepfour(stepthree) - output = "Your decoded message: "+stepfour - return output; -def encode(plaintext, key): - def b36_encode(i): - if i < 0: return "-" + b36_encode(-i) - if i < 36: return "0123456789abcdefghijklmnopqrstuvwxyz"[i] - return b36_encode(i // 36) + b36_encode(i % 36) - def stepone(plaintext): - magicasciipowers = list(plaintext) - numbersgohere = [""]*len(magicasciipowers) - for i in range(len(magicasciipowers)): - temp = magicasciipowers[i] - temp = ord(temp) - if (temp<100): - numbersgohere[i]="0"+str(temp) - else: - numbersgohere[i]=str(temp) - numbers = "" - for i in range(len(numbersgohere)): - numbers=numbers+numbersgohere[i] - return(int(numbers)) - def vigenere_enc(stepone,key): - alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" - input_string = "" - enc_key = "" - enc_string = "" - enc_key = key - enc_key = enc_key.lower() - input_string = stepone - input_string = input_string.lower() - string_length = len(input_string) - expanded_key = enc_key - expanded_key_length = len(expanded_key) - while expanded_key_length < string_length: - expanded_key = expanded_key + enc_key - expanded_key_length = len(expanded_key) - key_position = 0 - for letter in input_string: - if letter in alphabet: - position = alphabet.find(letter) - key_character = expanded_key[key_position] - key_character_position = alphabet.find(key_character) - key_position = key_position + 1 - new_position = position + key_character_position - if new_position > 35: - new_position = new_position - 36 - new_character = alphabet[new_position] - enc_string = enc_string + new_character - else: - enc_string = enc_string + letter - return(enc_string) - steptwo = vigenere_enc(b36_encode(stepone(plaintext)),key) - steptwob = steptwo.encode('utf-8') - stepthree = base64.a85encode(steptwob) - stepthreeb = stepthree.decode('utf-8') - stepfour = str(stepthreeb)+"h" - answer = False - while answer == False: - discord = input("Optimize for discord? y or n: ") - if(discord=="y"): - answer = True - stepfour = "```"+str(stepthreeb)+"h```" - elif(discord=="n"): - answer = True - output="Your encoded message: "+stepfour - return output -var = input("Encode or Decode? 1 for encode, 2 for decode: ") -if (var=="1"): - ciphertext = input("Enter message to encode: ") - key = input("Enter encryption key: ") - print(encode(ciphertext, key)) -elif (var=="2"): - plaintext = input("Enter message to decode: ") - key = input("Enter encryption key: ") - print(decode(plaintext, key)) +#Changelog: + #HOP Encode + #1.0: + #Released HOP Encode + #1.0.1: + #Updated version number + #Added optimize for Discord option + #Added changelog + #HOP Decode + #1.0: + #Released HOP decode + #1.0.1: + #Updated version number to match that of HOP Encode + #Added changelog + #HOP + #1.0.2: + #Combined HOP Encode and HOP Decode + #Integrated GitHub and repl.it + #Added several files, including .replit, CODE_OF_CONDUCT.md, CONTRIBUTING.md, README.md, and SECURITY.md + #Moved input, print, and import statements outside functions + #Added ability to choose on runtime encode or decode + +import base64 +def decode(ciphertext, key): + steponel = list(ciphertext) + stepone = "" + for i in range(len(steponel)-1): + stepone=stepone+steponel[i] + steptwo = stepone.encode('utf-8') + steptwob = base64.a85decode(steptwo) + steptwoc = steptwob.decode('utf-8') + def vigenere_dec(cipher,key): + alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" + input_string = "" + dec_key = "" + dec_string = "" + dec_key = key + dec_key = dec_key.lower() + input_string = cipher + input_string = input_string.lower() + string_length = len(input_string) + expanded_key = dec_key + expanded_key_length = len(expanded_key) + while expanded_key_length < string_length: + expanded_key = expanded_key + dec_key + expanded_key_length = len(expanded_key) + key_position = 0 + for letter in input_string: + if letter in alphabet: + position = alphabet.find(letter) + key_character = expanded_key[key_position] + key_character_position = alphabet.find(key_character) + key_position = key_position + 1 + new_position = position - key_character_position + if new_position > 35: + new_position = new_position + 36 + new_character = alphabet[new_position] + dec_string = dec_string + new_character + else: + dec_string = dec_string + letter + return(dec_string) + def stepfour(stepthree): + stepthree=str(int(stepthree,36)) + test = list(stepthree) + if len(test)%3==1: + stepthree="00"+stepthree + if len(test)%3==2: + stepthree="0"+stepthree + stepthreel = list(stepthree) + stepfourl = [""]*int((float(len(stepthreel))/3)) + k = 0 + while k < len(stepthreel)-2: + stepfourl[int(k/3)] = stepthreel[k] + stepthreel[k+1] + stepthreel[k+2] + k = k + 3 + for j in range(len(stepfourl)): + temp = stepfourl[j] + temp = int(temp) + temp = chr(temp) + stepfourl[j] = temp + stepfour="" + for l in range(len(stepfourl)): + stepfour = stepfour + stepfourl[l] + return(stepfour) + stepthree = vigenere_dec(steptwoc, key) + stepfour = stepfour(stepthree) + output = "Your decoded message: "+stepfour + return output; +def encode(plaintext, key): + def b36_encode(i): + if i < 0: return "-" + b36_encode(-i) + if i < 36: return "0123456789abcdefghijklmnopqrstuvwxyz"[i] + return b36_encode(i // 36) + b36_encode(i % 36) + def stepone(plaintext): + magicasciipowers = list(plaintext) + numbersgohere = [""]*len(magicasciipowers) + for i in range(len(magicasciipowers)): + temp = magicasciipowers[i] + temp = ord(temp) + if (temp<100): + numbersgohere[i]="0"+str(temp) + else: + numbersgohere[i]=str(temp) + numbers = "" + for i in range(len(numbersgohere)): + numbers=numbers+numbersgohere[i] + return(int(numbers)) + def vigenere_enc(stepone,key): + alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" + input_string = "" + enc_key = "" + enc_string = "" + enc_key = key + enc_key = enc_key.lower() + input_string = stepone + input_string = input_string.lower() + string_length = len(input_string) + expanded_key = enc_key + expanded_key_length = len(expanded_key) + while expanded_key_length < string_length: + expanded_key = expanded_key + enc_key + expanded_key_length = len(expanded_key) + key_position = 0 + for letter in input_string: + if letter in alphabet: + position = alphabet.find(letter) + key_character = expanded_key[key_position] + key_character_position = alphabet.find(key_character) + key_position = key_position + 1 + new_position = position + key_character_position + if new_position > 35: + new_position = new_position - 36 + new_character = alphabet[new_position] + enc_string = enc_string + new_character + else: + enc_string = enc_string + letter + return(enc_string) + steptwo = vigenere_enc(b36_encode(stepone(plaintext)),key) + steptwob = steptwo.encode('utf-8') + stepthree = base64.a85encode(steptwob) + stepthreeb = stepthree.decode('utf-8') + stepfour = str(stepthreeb)+"h" + answer = False + while answer == False: + discord = input("Optimize for discord? y or n: ") + if(discord=="y"): + answer = True + stepfour = "```"+str(stepthreeb)+"h```" + elif(discord=="n"): + answer = True + output="Your encoded message: "+stepfour + return output +var = input("Encode or Decode? 1 for encode, 2 for decode: ") +if (var=="1"): + ciphertext = input("Enter message to encode: ") + key = input("Enter encryption key: ") + print(encode(ciphertext, key)) +elif (var=="2"): + plaintext = input("Enter message to decode: ") + key = input("Enter encryption key: ") + print(decode(plaintext, key))