diff --git a/src/Woche2/aufgabe2.py b/src/Woche2/aufgabe2.py new file mode 100644 index 0000000..57d1ee3 --- /dev/null +++ b/src/Woche2/aufgabe2.py @@ -0,0 +1,41 @@ +def key_string(key, text): + keystring = key + while len(keystring) <= len(text): + keystring += key + return keystring[: len(text)] + + +class VigenereCipher(object): + def __init__(self, key, alphabet): + self.alphabet = alphabet + self.key = key + self.keymap = [] + for i in range(len(alphabet)): + self.keymap.append(alphabet) + alphabet = alphabet[1:] + alphabet[0] + + def encode(self, text): + keystring = key_string(self.key, text) + encode_string = "" + + for index, i in enumerate(text): + index_alpha = self.alphabet.find(i) + if index_alpha == -1: + encode_string += i + else: + index_key = self.alphabet.find(keystring[index]) + encode_string += self.keymap[index_key][index_alpha] + return encode_string + + def decode(self, text): + keystring = key_string(self.key, text) + decode_string = "" + + for index, i in enumerate(text): + if self.alphabet.find(i) == -1: + decode_string += i + else: + index_key = self.alphabet.find(keystring[index]) + index_alpha = self.keymap[index_key].find(i) + decode_string += self.alphabet[index_alpha] + return decode_string