Schreiben Sie ein Programm und speichern Sie es als Caesar.py. Ihr Programm soll beim Aufruf drei Programmparameter erhalten: Zwei Dateinamen und eine Ganzzahl. Bei Ausf ¨uhrung soll das Programm den Inhalt der ersten Datei mithilfe der Caesar-Verschl ¨usselung und der Ganzzahl als Schl ¨ussel verschl ¨usseln und in die zweite Datei schreiben. Ihr Programm soll nur Kleinbuchstaben verschl¨usseln und alle anderen Zeichen unver¨andert lassen. Tipp: Legen Sie ein Array f ¨ur alle Zeichen, die verschl ¨usselt werden sollen (Kleinbuchstaben) an, und arbeiten Sie mit diesem Array. Bei der Caesar-Verschl ¨usselung (auch Verschiebechiffre) wird jeder Buchstabe des Klartextes auf einen Geheimtextbuchstaben abgebildet. Dazu werden die Zeichen des Alphabets um eine bestimmte Anzahl (den Schl ¨ussel) nach rechts verschoben. Geht man beim Verschieben ¨uber ’z’ hinaus, dann beginnt man wieder bei ’a’. Beispiel: Aus ’python’ w¨urde mit Schl¨ussel 2 somit ’ravjqp’.
Da habe ich jetzt:
import sys
def caesarencrypt(text, shift):
encryptedtext = ""
for char in text:
if char.islower():
encryptedtext += chr((ord(char) - ord('a') + shift) % 26 + ord('a'))
else:
encryptedtext += char
return encrypted_text
def main():
if len(sys.argv) != 4:
print("Usage: python Caesar.py <inputfile> <outputfile> <shift>")
sys.exit(1)
input_filename = sys.argv[1]
output_filename = sys.argv[2]
shift = int(sys.argv[3])
try:
with open(input_filename, 'r') as file:
text = file.read()
encrypted_text = caesar_encrypt(text, shift)
with open(output_filename, 'w') as file:
file.write(encrypted_text)
print(f"Verschlüsselter Text wurde in {output_filename} geschrieben.")
except FileNotFoundError:
print(f"Die Datei {input_filename} wurde nicht gefunden.")
sys.exit(1)
if __name == "__main":
main()
Ist das so richtig?
___
[Edit 2024-08-12: Quelltext formatiert und eingerückt]