import translator
from .. import utils
from collections import OrderedDict
[docs]class SubstitutionTranslator(translator.Translator):
"""Basic substitution, default key reversed alphabet"""
def __init__(self, key=utils.alphabet[::-1]):
self.setKey(key)
[docs] def setKey(self, key):
if (type(key) in (dict, OrderedDict)):
self.key = OrderedDict(sorted(key.items(), key=lambda t: t[0]))
elif (type(key) in (str, list)):
self.key = OrderedDict(zip(utils.alphabet, key))
else:
assert ValueError("Unknown key type")
[docs] def translate(self, cipher):
result = ""
for i in self.parseInput(cipher):
if (self.key.has_key(i)):
result += self.key[i]
else:
result += i
return result
[docs] def encode(self, cipher):
k = self.key
self.setKey(dict(zip(self.key.values(), self.key.keys())))
ret = self.translate(cipher)
self.key = k
return ret