In diesem Applet wird gezeigt, wie man aus einer Zeichenkette den ASCII-Code der einzelnen Zeichen erhält, diesen Code verwandelt, und aus dem verwandelten Code wieder eine Zeichenkette macht. Das ist zwar keine Geheimschrift im eigentlichen Sinne, aber die ausgegebene Zeichenkette kann doch nicht jeder lesen. Das Fernziel besteht darin, die veränderte Zeichenkette an einen anderen Computer zu schicken, und sie dort mit Hilfe eines Schlüssels wieder zu dekodieren.
Neu zu lernen (1) : Der ASCII-Code
Zeichen werden im Computer durch Zahlen dargestellt. Der bekannteste Code ist der
ASCII-Code (American Standard Code for Information Interchange). Der ASCII-Code ist ein
Byte-Code. Eigentlich wird in Java der sog. Unicode verwendet, bei dem ein Codewert in 2
Bytes abgespeichert ist. Aber Java kann auch mit dem ASCII-Code umgehen. Die
Codierung beruht auf der Verwendung von Zweierpotenzen:
Ziffern sind als (25 + 24 + Ziffernwert) abgespeichert. Der Code von 0 ist 48, der Code von 1 ist 49 usw.
Großbuchstaben sind als (26 + Stelle im Alphabet) abgespeichert. Der Code von A ist 65 u.s.w.
Kleinbuchstaben sind als (26 + 25 + Stelle im Alphabet) abgespeichert. Der Code von a ist 97 u.s.w.
Neu zu lernen (2) : Spezielle String-Methoden
Um eine Zeichenkette in eine Folge von ASCII-Codes zu verwandeln, verwendet man die Methode getBytes() der Klasse String. Durch die Anweisung
byte[] ascii=eing.getBytes();
werden die ASCII-Codes der Zeichenkette eing in dem Byte-Array ascii abgespeichert. Dort kann man auf sie zugreifen und sie abändern. Da es bei dieser Übung nicht um eine ernsthafte Codierung geht, werden die Codes im untenstehenden Applet um 1 erhöht: Aus A wird B, aus B wird C u.s.w.
Um die veränderten Codes wieder in eine Zeichenkette zu verwandeln, wird hier einer der Konstruktoren der Klasse String verwendet. Die Anweisung
ausg=new String(ascii);
wandelt die im Array ascii stehenden Codes in Zeichen um und setzt sie zu der Zeichenkette ausg zusammen. Der Quellcode des Applets sieht damit folgendermaßen aus:
import
java.awt.*;public
class geheim extends Applet{public void init(){
public boolean action(Event e, Object was){
Und hier ist das Codierung-Applet: