Caesar-Verschlüsselung

Aus SibiWiki
Version vom 23. Januar 2022, 17:54 Uhr von Akaibel (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen


Die Caesar-Verschlüsselung ist ein einfaches Verschlüsselungsverfahren, das auf der Verschiebung von Buchstaben basiert.

Bei der Verschlüsselung wird jeder Buchstabe des Klartexts auf einen Geheimtextbuchstaben abgebildet. Diese Abbildung ergibt sich, indem man die Zeichen eines geordneten Alphabets um eine bestimmte Anzahl nach rechts verschiebt. Die Anzahl der verschobenen Zeichen bildet den Schlüssel.

Beispiel für eine Verschiebung um drei Zeichen (d.h. Schlüssel = 3):


klar:    a b c d e f g h i j k l m n o p q r s t u v w x y z
geheim:  d e f g h i j k l m n o p q r s t u v w x y z a b c

Aus dem Klartext hallo ergibt sich so der Geheimtext kdoor.

Implementierung


public class Caesar {

   public static String verschluesseln(String pText, int pCode){
       pText = pText.toLowerCase();
       String ergebnis = "";
       for(int i=0; i<pText.length(); i++){
           char buchstabe = pText.charAt(i);
           buchstabe += pCode;
           if(buchstabe > 'z'){
               buchstabe -= 26;
           }
           ergebnis += buchstabe;
       }
       return ergebnis;
   }
  
   public static String entschluesseln(String pText, int pCode){
       // statt pCode Buchstaben nach rechts zu gehen...
       // ... kann man auch (26-pCode) Buchstaben nach links gehen!
       String ergebnis = verschluesseln(pText, 26 - pCode);
       return ergebnis;
   }
  
   public static void main(String[] args) {
       int schluessel = 3;
       String nachricht = "hallo";
       System.out.println("nachricht: "+nachricht);
       String verschluesselt = verschluesseln(nachricht, schluessel);
       System.out.println("verschluesselt: "+verschluesselt);
       String entschluesselt = entschluesseln(verschluesselt, schluessel);
       System.out.println("entschluesselt: "+entschluesselt);
   }
}