Example #1
0
    def setConfig(self, config):

        if len(config) > 10:
            print(
                "Error, number of pairs in configuration must be at most 10 paris"
            )
            sys.exit(0)

        elif len(config) > 0 and len(config) <= 10:
            #checks if there are only 2 letters in each switch
            for pair in config:
                if len(pair) != 2:
                    print("plugboard configuration isn't legal")
                    sys.exit(0)
            #checks if each letter appear only once in the configuration
            for pair in config:
                for pair2 in config:
                    if pair != pair2:
                        if pair2.count(pair[0]) != 0 or pair2.count(
                                pair[1]) != 0:
                            print(
                                "illegal plugboard configuration, each pair of letters must contain different letters"
                            )
                            sys.exit(0)
            for pair in config:
                f_letter = pair[0]
                s_letter = pair[1]
                f_index = Translator.letterToindex(f_letter)
                s_index = Translator.letterToindex(s_letter)
                self.permutation[f_index] = s_letter
                self.permutation[s_index] = f_letter
Example #2
0
    def translation(self, letter):
        message = self.circularshift(self.offset - self.settings, letter)

        if self.dir == "FW":
            newmessage = self.permutation[Translator.letterToindex(message)]

        else:
            newmessage = self.reversepermutation[Translator.letterToindex(
                message)]

        return self.circularshift((self.settings - 1) - (self.offset - 1),
                                  newmessage)
Example #3
0
 def __init__(self, num, permutation, turnOverN):
     self.num = num
     self.permutation = permutation
     self.turnOverN = Translator.letterToindex(turnOverN)
     self.offset = 0
     self.settings = 0
     self.reversepermutation = [0] * self.alphabet_size
     self.reversetranslation()
Example #4
0
 def translation(self, letter):
     return self.permutation[Translator.letterToindex(letter)]