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
