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