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

6 Lösungen Lösungen öffentlich
#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
vote_ok
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:

Quellcode ausblenden Java-Code


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:

Quellcode ausblenden Java-Code

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:

Quellcode ausblenden Java-Code

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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2090852

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.