Wie kann ich Caesar-Verschlüsselung in Python dechiffrieren?

2 Antworten

naja du müsstest das "Wörterbuch" zum dechiffrieren einzeln durch gehen nach einem Durchlauf die Zahl erhöhen und dann wieder durchlaufen.

Allerdings ist das nicht gerade Laufzeit freundlich ^^

Da könntest du das benutzen:

def encode_caesar(word, shift=3):
    caesared_word = []
    for char in word:
        asc = ord(char)
        if asc >= 65 and asc <= 90:
            char = chr((((ord(char) - 65) + shift) % 26) + 65)
        elif asc >= 97 and asc <= 122:
            char = chr((((ord(char) - 97) + shift) % 26) + 97)
        caesared_word.append(char)
    return "".join(caesared_word)

def decode_caesar(word, shift = 3):
    return encode_caesar(word, -shift)

def analyze_caesar(wordlist, caesared_word):
    caesared_word = caesared_word.lower()
    for word in open(wordlist, "r"):
        word = word.strip().lower()
        if len(word) != caesared_word: continue
        for shift in range(26):
            if encode_caesar(word, shift) == caesared_word: return shift
    return -1

Anwendungsbeispiel:

shift = analyze_caesar("deutsch-words.lst", "Dsihonxfkhq")
if shift == -1:
    print("Keine Übereinstimmung gefunden.")
else:
    print("Übereinstimmung gefunden. Verschiebung: {0}".format(shift))

Ach verdammt! Hab grad noch nen Fehler in meinem Code gefunden, aber die Zeit zum Bearbeiten war schon rum:

Anstelle der Zeile

if len(word) != caesared_word: continue

muss natürlich

if len(word) != len(caesared_word): continue

sonst funktioniert das ganze nicht. ^^;;;

0

Was möchtest Du wissen?