Einzelfunktionenexperimentierverzeichnis in git integriert
This commit is contained in:
70
EinzelfunktionenExperimentierbereich/Viginere/vignere.py
Normal file
70
EinzelfunktionenExperimentierbereich/Viginere/vignere.py
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/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)
|
||||
Reference in New Issue
Block a user