Java :: Aufgabe #34 :: Lösung #4
6 Lösungen

#34
Mit Caesar Chiffre ent- und verschlüsseln
Anfänger - Java
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
#4

von nOrdan (1160 Punkte)
- 05.06.2019 um 20:25 Uhr
Anmerkung: Die Programmierung kann noch verbessert werden durch z.B eine GUI zur Auswahl, aber ich habe mich vorerst auf das nötigste beschränkt
Zuerst Verschlüsseln:
Java-Code
Entschlüsseln:
Java-Code
Die Methoden die ich aus meinem eigenem Methodensammlung package benutzt habe:
Java-Code
Zuerst Verschlüsseln:

import Methodensammlung.Methoden; /** * Ein Text wird mithilfe des Caesar Chiffres verschlüsselt * * @author (nOrdan) * @version (05.06.2019) */ public class Verschlüsseln { Methoden m = new Methoden(); public Verschlüsseln() { inputs(); } private void inputs() { boolean valid1 = false; int verschiebung = 0; String text = null; while (valid1 == false) { text = m.userInput("Geben sie ihren Text zum Verschlüsseln ein"); m.errorStringInput(text); text = text.toUpperCase(); valid1 = true; } valid1 = false; while (valid1 == false) { String input1 = m.userInput("Geben sie die gewünschte Verschiebung ein"); m.errorIntInput(input1); try { verschiebung = m.parseInt(input1); if (verschiebung > 26) { m.errorMessage("Ihr Wert ist größer als die größte mögliche Verschiebung","Size busy"); continue; } else { valid1 = true; } } catch(Exception e) { m.errorMessage("Invalid user input","Invalid input"); } } verschlüsseln(text,verschiebung); } private void verschlüsseln(String text, int verschiebung) { String ergebnis = ""; int change; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == ' ') { } else { if (text.charAt(i) >= 65 && text.charAt(i) <= 90) { change = (int)text.charAt(i) + verschiebung; if (change > 90) { change -= 26; ergebnis += (char)change; } else { ergebnis += (char)change; } } else { } } } m.informationMessage("Ihr verschlüsselter Text lautet " + ergebnis + ". Außerdem wurden Leerzeichen,Zahlen und Sonderzeichen entfernt und alle Buchstaben wurden groß geschrieben, damit die alte römische Schreibweise erhalten bleibt!" ,"Ergebnis"); } }
Entschlüsseln:

import Methodensammlung.Methoden; /** * Entschlüsseln eines mit Caesar Chiffre verschlüsseltem Text mit der Hilfe der BrutForce Methode (alle 25 Verschiebungen werden probiert) * * @author (nOrdan) * @version (05.06.2019) */ public class Entschlüsseln { Methoden m = new Methoden(); public Entschlüsseln() { inputs(); } private void inputs() { boolean valid1 = false; String text = null; while (valid1 == false) { text = m.userInput("Geben sie den zu entschlüsselnden Text ein"); m.errorStringInput(text); text = text.toUpperCase(); valid1 = true; } entschlüsseln(text); } private void entschlüsseln(String text) { int change = 0; String ergebnis = ""; for (int i = 1; i < 26; i++) { for (int y = 0; y < text.length(); y++) { if (text.charAt(y) == ' ') { } else { if (text.charAt(y) >= 65 && text.charAt(y) <= 90) { change = (int)text.charAt(y) - i; if (change < 65) { change += 26; ergebnis += (char)change; } else { ergebnis += (char)change; } } else { } } } m.informationMessage("Mit der Verschiebung um " + i + ":" + ergebnis,"Entschlüsselt"); ergebnis = ""; } } }
Die Methoden die ich aus meinem eigenem Methodensammlung package benutzt habe:

public String userInput(String message) { return JOptionPane.showInputDialog(message); } public int parseInt(String input) { return Integer.parseInt(input); } public void errorIntInput(String input) { if (input == null) { System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet } else if (input.isEmpty() == true) { //continue; wenn nötig } } public void errorStringInput(String input) { if (input == null) { System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet } else if (input.isEmpty() == true) { informationMessage("Da sie nichts eingegeben haben wird auch nichts ausgegeben","No input"); System.exit(0); } public void errorMessage(String message,String errorName) { JOptionPane.showMessageDialog(null,message,errorName,JOptionPane.ERROR_MESSAGE); } public void informationMessage(String message,String informationName) { JOptionPane.showMessageDialog(null,message,informationName,JOptionPane.INFORMATION_MESSAGE); }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1