This repository has been archived on 2023-04-13. You can view files and clone it, but cannot push or open issues or pull requests.
CloudBot/plugins/cypher.py

78 lines
1.7 KiB
Python

'''
Plugin which (de)cyphers a string
Doesn't cypher non-alphanumeric strings yet.
by instanceoftom
'''
from util import hook
chars="abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ "
len_chars = len(chars)
@hook.command
def cypher(inp):
".cypher <pass> <string> -- cyphers a string with the password"
passwd = inp.split(" ")[0]
len_passwd = len(passwd)
inp = " ".join(inp.split(" ")[1:])
out =""
passwd_index=0
for character in inp:
try:
chr_index = chars.index(character)
passwd_chr_index = chars.index(passwd[passwd_index])
out_chr_index = (chr_index + passwd_chr_index) % len_chars
out_chr = chars[out_chr_index]
out += out_chr
passwd_index = ( passwd_index + 1) % len_passwd
except ValueError:
out += character
continue
return out
@hook.command
def decypher(inp):
".decypher <pass> <string> -- decyphers a string with the password"
passwd = inp.split(" ")[0]
len_passwd = len(passwd)
inp = " ".join(inp.split(" ")[1:])
passwd_index=0
#I am lazy and I could do the math to get the passwd_index
#for this inp, but meh thats for a later day so lets loop.
for character in inp:
try:
chr_index = chars.index(character)
passwd_index = ( passwd_index + 1) % len_passwd
except ValueError:
continue
passwd_index = passwd_index-1
reversed_message = inp[::-1]
out =""
for character in reversed_message:
try:
chr_index = chars.index(character)
passwd_chr_index = chars.index(passwd[passwd_index])
out_chr_index = (chr_index - passwd_chr_index) % len_chars
out_chr = chars[out_chr_index]
out += out_chr
passwd_index = ( passwd_index - 1) % len_passwd
except ValueError:
out += character
continue
return out[::-1]