# Char Aufgabe



## Leno (8. Nov 2010)

Hi,

ich habe hier eine Aufgabe zur Verschlüsselung zur Caesar Verschlüsselung.

Aufgabe 5
Eine einfache und alte Verschlu üsselungmethode fu ̈r Texte ist die Caesar-Verschlu ̈sselung. Ausgangspunkt ist ein Text t und ein Schlüssel k ∈ N, 0 < k < 26. Das Verfahren arbeitet so, dass jeder Buchstabe durch den Buchstaben ersetzt wird, der k Buchstaben weiter im Alfabet erscheint. Dabei ist zu beachten, dass beim *“‘Hinauslaufen”’ *nach Z mit A weiter gezählt wird. Beispiel: t = HALLO und k = 1 ergibt als Ergebnis IBMMP. Schreiben Sei ein Java-Programm, das für einen Schlu ̈ssel k und einen Großbuchstaben c den verschlüsselten Buchstaben auf dem Bildschirm ausgibt. Die beiden Argumente werden in der Kommandozeile dem Programm übergeben. Wie ko önnte die Dekodierung funktionieren?
Hinweise: Modulo, Zeichen - ’A’

An für sich verstehe Ich die Aufgabe aber beim Punkt " Hinauslaufen " komme Ich nicht zurecht. 
Hat da jemand einen Tip für mich :shock:



```
import java.util.Scanner; 

public class Uebung5_5 {
    
    public static void main ( String []args ){
        
        
        
        Scanner sc = new Scanner (System.in); 
        
        int schlüssel;
        char symbol ; 
        
        System.out.println(" Bitte geben Sie den Schlüssel für die Verschlüsselung an");
        
        schlüssel =  sc.nextInt();  
        
        System.out.println(" Bitte geben Sie Ihr Symbol für die Verschlüsselung an ");
            
        symbol = sc.next().charAt(0);  // charAt (0) keine Ahnung aus Tutorium aber nachfragen ???!!
        
        
        
        char berechnung = (char) ( symbol + schlüssel);
    
        System.out.println(berechnung);
    
    
    
       }
}
```


DANKE FÜR ALLE ANTWORTEN


----------



## SlaterB (8. Nov 2010)

ignoriere das Hinauslaufen erstmal,
verschlüssele nur kleine Buchstaben mit kleinen Schlüsseln, wie im angegeben Beispiel 't = HALLO und k = 1 ergibt als Ergebnis IBMMP',
da ist kein Z->A Übergang

der Rest ist schwer genug

edit:
ok, hast du ja schon  , hier kommt gleich noch mehr Text

edit2:
also die Code-Zeile ist dann
> berechnung = (char)((berechnung - 'A') % 26 + 'A');

gib dir alle Buchstaben auf int gecastet als Zahlwert aus, schau dir % an, um zu verstehen was da passiert,
Ziel ist dass 'Z' +1 dann 'A' ist, wie die Aufgabe schon sagt


----------



## Andi_CH (8. Nov 2010)

Leno hat gesagt.:


> An für sich verstehe Ich die Aufgabe aber beim Punkt " Hinauslaufen " komme Ich nicht zurecht.



Hm, ich nehme an du weisst was mit "Hinauslaufen" gemeint ist?

a + 3 = d
w + 3 = z
y + 3 = ???

Das läuft übers z hinaus und ist ausserhalb des Alphabetes - dazu gibt es keine allgemein gültige Regel, aber in diesem Fall muss y + 3 = b sein.

Das geht im Kreis herum und nennt sich "Modulo"

neuerChar =  (alterChar + key) modulo z

Beim dechiffieren ist es, je nach dem wie du es machst, anders

neuerChar = alterChar - key

Das läuft unter a und ist mit Modulo nicht so einfach lösbar, aber da kannst du dir überlegen, dass a - 3 dasselbe ist wie a + 23 und das geht mit modulo wieder. (Allgemein 26 - key)

Ist es jetzt klarer?


----------

