# Caesar-Verschlüsselung programmieren



## Lowrider1 (28. Mrz 2007)

Hallo!
Ich hoffe mir kann hier jemand helfen!! Schreibe morgen eine Klausur in Informatik und soll ein "einfaches" Programm schreiben, wo Wörter nach der Caesar-Verschlüsselung verschlüsselt werden!
BITTE HELFT MIR!!! 
Könnt ihr mir ein Programm schreiben damit ich weiß wie das geht? (Arrays mit Buchstaben füllen, Dreieckstausch etc.)


----------



## mikachu (28. Mrz 2007)

der algorithmus befindet sich hier


----------



## Gast (28. Mrz 2007)

du gehst einen STring mit charAt() durch und addierst einfach eine Zahl drauf, dann wird des verschoben und die erhälst die gewünschte chiffrierung. Zum entschlüsseln einfach die ahl wieder abziehn, dann stehts des wieder klartext da.


----------



## mikachu (28. Mrz 2007)

```
public class Caesar
{
	public static String code( String str, int key )
	{
		String ret = "";
		str = str.toUpperCase();
		for( int i = 0; i < str.length(); ++i )
		{
			ret += (char) ( ( str.charAt( i ) - 65 + key ) % 26 + 65 );
		}
		return ret;
	}

	public static String decode( String str, int key )
	{
		return code( str, -key );
	}
}
```


----------



## Lowrider1 (28. Mrz 2007)

mika.fhdw hat gesagt.:
			
		

> der algorithmus befindet sich hier


Ja Danke aber ich habe auch Probleme dies in ein Programm umzuwandeln! Brauche also ein Programm.
Trotzdem vielen Dank!!!!!


----------



## mikachu (28. Mrz 2007)

siehe post darüber :wink:
Aufruf mit

```
public static void main( String... args )
{
    String myString = "Hallo Welt";
    int myInt = 3;
    String coded;
    System.out.println( coded = Caesar.code( myString, myInt ) ); // zum kodieren
    System.out.println( Caesar.decode( coded, myInt ) ); // zum dekoden
}
```


----------



## mikachu (28. Mrz 2007)

```
public String code( String str, int key )
{
	String ret = "";
	str = str.toUpperCase();
	for( int i = 0; i < str.length(); ++i )
	{
		char curChar = str.charAt( i ); 
		if( curChar >= 'A' && curChar <= 'Z' ||
			 curChar >= 'a' && curChar <= 'z' )
			ret += (char) ( ( curChar - 65 + key ) % 26 + 65 );
		else
			ret += curChar;
	}
	return ret;
}
```

noch etwas verändert :wink: nun werden NUR buchstaben verarbeitet


----------



## Lowrider1 (28. Mrz 2007)

mika.fhdw hat gesagt.:
			
		

> siehe post darüber :wink:
> Aufruf mit
> 
> ```
> ...


Danke!
Das mit dem Aufrufen ist nicht so wichtig! Das Programm klingt erstmal sehr schwer aber muss schauen ob ich da durch blicke! ^^ 
Sind gerade erst angefangen mit Java. Viele Dinge kenne ich also noch nicht! Kann man das auch einfacher schreiben? 
Wirklich ganz simpel? Du denkst jetzt sicher auch das ich ein Idiot bin aber wir sind wirklich erst angefangen! ^^ 
Das mit dem Array usw versteh ich aber ^^


----------



## mikachu (28. Mrz 2007)

:shock: noch einfacher ???
oh, das wird schwer ???:L 

aber wenn ihr grad mit Java angefangen habt, wird das bestimmt noch drankommen.
ich könnte höchstens noch den code mit kommentaren versehen, welche dir vll weiterhelfen


----------



## Guest (28. Mrz 2007)

mika.fhdw hat gesagt.:
			
		

> ```
> public class Caesar
> {
> public static String code( String str, int key )
> ...



Es ist ja nett von dir, dass du ihm hier helfen willst mika.fhdw aber allgemein werden hier keine fertigen Lösungen für Aufgaben gestellt, sondern es werden nur Hilfestellungen bei Problemen gegeben. 

Der Threadstelle hätte nämlich sicher mehr gelernt, wenn er sich das ganze selbst erarbeitet hätte und nicht schon eine fertig Lösung vor die Nase gesetzt bekommen hätte.


----------



## mikachu (28. Mrz 2007)

> Das Programm klingt erstmal sehr schwer aber muss schauen ob ich da durch blicke! ^^


was will man dazu noch sagen?

BTW, das würd ich nicht als Aufgabe sehen :wink:

lieber erstmal java lernen


----------



## mikachu (28. Mrz 2007)

Es ist auch meiner Ansicht nach besser, wenn man schon ein vorgefertigtes Programm hat, was man dann nach und nach analysiert und sieht, was denn da gemacht wird.

PseudoCode:

```
für jeden Buchstaben in der Zeichenkette
{
   nimm Buchstabe
   erhöhe Buchstabenwert um x Schritte // x ist die Anzahl
   füge neuen Buchstaben an den String dran
}
```


----------



## Lowrider1 (28. Mrz 2007)

mika.fhdw hat gesagt.:
			
		

> Es ist auch meiner Ansicht nach besser, wenn man schon ein vorgefertigtes Programm hat, was man dann nach und nach analysiert und sieht, was denn da gemacht wird.
> 
> PseudoCode:
> 
> ...



Ja Danke!!! 
Ich meine ich benötige erstmal eine Vorlage anhand der ich mir erstmal deutlich machen kann, wie ich vorzugehen habe! Es ist schwer für einen Java-anfänger ein  komplettes Programm zu schreiben! 
Vorher haben wir mir blueJ gearbeitet und die Befehle sind grundliegend verändert. Ich hoffe das nun deutlich wird, wieso ich diese Hilfe in Anspruch genommen habe!!
Vielen Dank nochmals an mika.fhdw !!!!!!!!!!


----------

