from sys import argv
key1 = eval(argv[1]) # list of function selectors aka the key1
key2 = eval(argv[2]) # list of function selectors aka the key2
r = len(key1) # nmbr rounds implied by keys
v = eval(argv[3]) # moving vector
bo = int(argv[4]) # nmbr of bits out
pt = int(argv[5]) # the plaintext
def round(s, key1, key2, bo):
s = s ^ key1
s = key2 * s % 2 ** bo
return s
def encrypt(pt, key1, key2, r, bo):
ct = pt
for i in range(r):
ct = round(ct, key1[i], key2[i], bo)
ct = bin(ct)
ct = ct[2:]
if len(ct) < bo:
d = 2 ** (bo - len(ct))
d = bin(d)
d = d[3:]
ct = d + ct
b = ct[v[i]:]
a = ct[:v[i]]
ct = b + a
ct = int(ct, 2)
return ct
print encrypt(pt, key1, key2, r, bo)
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}