Python :: Aufgabe #23
5 Lösungen

Mit Caesar Chiffre ent- und verschlüsseln
Anfänger - Python
von Dome
- 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.
Konsolenausgabe:
Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu
Lösungen:

#Verschiebung um x Stellen print x = int(input('Um wieviele Stellen soll das Alphabet verschoben werden? ')) t = input('Einen Text zum Verschluesseln/Entschluesseln eingeben: ') #Umwandlung in eine Liste l = list(t) #Umwandlungvorschrift der eingegeben Buchstaben (mithilfe eines Dictionaries) d = { "a":0 , "b":1 , "c":2 , "d":3 , "e":4 , "f":5 , "g":6 , "h":7 , "i":8 , "j":9 , "k":10, "l":11, "m":12, "n":13, "o":14, "p":15, "q":16, "r":17, "s":18, "t":19, "u":20, "v":21, "w":22, "x":23, "y":24, "z":25 } #Umwandlungsvorschrift der Zahlen in Buchstaben e = { 0 :"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" } #Verschluesselung #Leere Hilfsliste definieren m = [] #Verschluesselung der einzelnen Buchstaben mit 'while'-Schleife i = 0 while i < len(l): m.append(e[(d[l[i]] + x)%26]) i = i + 1 #Hilfsstring definieren s = "" #Ausgabe als Textblock j=0 while j < len(m): s = s + m[j] j = j + 1 #Die entgültige Ausgabe print print ("Dies ist der Geheimtext: " +s)

import string liste = [] klein = string.ascii_lowercase gross = string.ascii_uppercase wort = input("Text: ") verschiebung = int(input("Verschiebung: ")) for i in range(len(wort)): if wort[i] in klein: index = klein.find(wort[i]) umwandlung = klein[(index + verschiebung)%26] liste.append(umwandlung) elif wort[i] in gross: index = gross.find(wort[i]) umwandlung = gross[(index + verschiebung)%26] liste.append(umwandlung) else: liste.append(wort[i]) chiffre = ''.join(liste[i] for i in range(len(liste))) print("Ergebnis:", chiffre)

# -*- coding: utf-8 -*- b = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",\ "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] print "Verschlüsseln: v" print "Entschlüsseln: e" x = 0 while x < 1: auswahl = raw_input("\nAuswahl: ") if auswahl != "v" and auswahl != 'e': print "\nBitte entweder 'v' oder 'e' eingeben!" else: x = 1 # Verschlüsselung if auswahl == "v": eingabe = raw_input("\nBitte das zu verschlüsselnde Wort eingeben: ").lower() rot = input("Stellenanzahl für Verschiebung: ") chiffre = "" x = 0 while x < len(eingabe): # Position des Buchstaben ermitteln indexBuchstabe = b.index(eingabe[x]) # Position nach Verschiebung ermitteln if indexBuchstabe + rot > 25: indexBuchstabe_ab_anfang = (indexBuchstabe + rot) % 26 chiffre = chiffre + b[indexBuchstabe_ab_anfang] else: chiffre = chiffre + b[indexBuchstabe + rot] x = x + 1 print "\nVerschiebung um " + str(rot) + " Stellen ergibt den \ Begriff: " + chiffre # Entschlüsselung else: eingabe = raw_input("\nBitte das zu entschlüsselnde Wort eingeben: ").lower() rot = input("Stellenanzahl für Verschiebung: ") dechiffre = "" x = 0 while x < len(eingabe): indexBuchstabe = b.index(eingabe[x]) if indexBuchstabe + rot > 25: indexBuchstabe_ab_anfang = (indexBuchstabe - rot) % 26 dechiffre = dechiffre + b[indexBuchstabe_ab_anfang] else: dechiffre = dechiffre + b[indexBuchstabe - rot] x = x + 1 print "\nVerschiebung um " + str(rot) + " Stellen ergibt den \ Begriff: " + dechiffre

def make_chiffre(rot): chiffre = {} for i in range (ord('a'), ord('z')) : chiffre[chr(i)] = chr( (i + rot - ord('a')) % 26 + ord('a')) for i in range (ord('A'), ord('Z')) : chiffre[chr(i)] = chr( (i + rot - ord('A')) % 26 + ord('A')) return chiffre; def encrypt(txt, rot) : chiffre = make_chiffre(rot) return ''.join([chiffre[i] if i in chiffre else i for i in txt ] ) txt = input('\nPlease enter text to encrypt\n') rot = int(input('\nPlease enter rotation (int), negative value means decrypt \n')) encrypt(txt, rot)

abcgross="ABCDEFGHIJKLMNOPQRSTUVWXYZ" abcklein="abcdefghijklmnopqrstuvwxyz" txt=input("Bitte zu kodierenden Text eingeben:") r=0 while r>26 or r<1: r=int(input("Um wieviele Stellen soll verschoben werden?(1-26) ")) atxt="" warn=0 warntxt="" for i in txt: if i==" ": atxt=atxt+" " continue if i.upper() not in abcgross: atxt=atxt+i #nicht codierbare Zeichen direkt zur Ausgabe bitte! warn=warn+1 warntxt=warntxt+i+"," continue if i == i.upper(): abc=abcgross if i == i.lower(): abc=abcklein abcl=len(abc) for j in range(abcl): if i==abc[j]: if j+r>=abcl: atxt=atxt+abc[j+r-abcl] else: atxt=atxt+abc[j+r] print("Codierter Text:",atxt) if warn > 0: print("Achtung! folgende im Text enthaltenen Zeichen wurden nicht kodiert:",warntxt[:-1])