#!/usr/bin/python3 # -*- coding: utf8 -*- BW = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26} UBW = {v: k for k, v in BW.items()} PW = "Standardobjekteabcdefghijklmnopqrstuvwxyz" text = "Da ist ein ganz einfacher und sinnfreier Text um die Funktion zu testen und zu sehen was passiert." pwl = len(PW) encoded_text = "" encoded_text_s = "" # wenn Leer und Sonderzeichen Schlüsselbuchstaben verbrauchen auslz = 0 # auslasszähler zählt zeichen die im text nicht codiert wurden for i in range(len(text)): if text[i].upper() not in BW: encoded_text += text[i] auslz += 1 encoded_text_s += text[i] else: b1 = BW[text[i].upper()] b2 = BW[PW[(i - auslz) % pwl].upper()] b2s = BW[PW[i % pwl].upper()] ba = (b1 + b2 - 1) % 26 bas = (b1 + b2s - 1) % 26 if ba == 0: ba = 26 if bas == 0: bas = 26 if text[i] == text[i].upper(): encoded_text += UBW[ba] encoded_text_s += UBW[bas] else: encoded_text += UBW[ba].lower() encoded_text_s += UBW[bas].lower() text = encoded_text # zum überprüfen # text=encoded_text_s #zum überprüfen decoded_text = "" decoded_text_s = "" auslz = 0 # auslasszähler zählt zeichen die im text nicht codiert wurden for i in range(len(text)): if text[i].upper() not in BW: decoded_text += text[i] auslz += 1 decoded_text_s += text[i] else: b1 = BW[text[i].upper()] b2 = BW[PW[(i - auslz) % pwl].upper()] b2s = BW[PW[i % pwl].upper()] ba = (b1 - b2 + 1) % 26 bas = (b1 - b2s + 1) % 26 if ba == 0: ba = 26 if bas == 0: bas = 26 if text[i] == text[i].upper(): decoded_text += UBW[ba] decoded_text_s += UBW[bas] else: decoded_text += UBW[ba].lower() decoded_text_s += UBW[bas].lower() print(encoded_text) print(decoded_text) print() print(encoded_text_s) print(decoded_text_s)