Files

60 lines
1.7 KiB
Python

#!/usr/bin/python3
# -*- coding: utf8 -*-
PW = "Key"
text = "Dies ist ein geheimer Text"
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()}
PWe = ""
PWd = ""
for b in PW:
if b.upper() in BW:
PWe += b.upper() # Sonderzeichen aus PW entfernen und
PWd += b.upper()
if len(PWe) < len(text):
for b in text:
if b.upper() in BW:
PWe += b.upper()
encoded_text = ""
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
else:
b1 = BW[text[i].upper()]
b2 = BW[PWe[(i - auslz)]]
ba = (b1 + b2 - 1) % 26
if ba == 0:
ba = 26
if text[i] == text[i].upper():
encoded_text += UBW[ba]
else:
encoded_text += UBW[ba].lower()
text = encoded_text # zum überprüfen
decoded_text = ""
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
else:
b1 = BW[text[i].upper()]
b2 = BW[PWd[(i - auslz)].upper()]
ba = (b1 - b2 + 1) % 26
if ba == 0:
ba = 26
PWd += UBW[ba]
if text[i] == text[i].upper():
decoded_text += UBW[ba]
else:
decoded_text += UBW[ba].lower()
print(encoded_text)
print(decoded_text)