Cäsar Verschlüsselung

Spranta

Erfahrenes Mitglied
Hallo

ich habe im Internet folgendes Script gefunden
Code:
  public static String caesar( String s )
  {
    StringBuffer ergebnis = new StringBuffer();

    for( int i = 0; i < s.length(); i++ )
    {
      int c = s.charAt( i );

      if ( (c >= 'A') && (c <= 'z') ) {
        c += key;
        if( c > 'z' )
          c = 'a' + c % 'z' -1;
        if( (c > 'Z') && (c < 'a') ) 
          c = 'A' + c % 'Z' - 1;
      }
      ergebnis.append( (char) c );
    }
    
    return ergebnis.toString();
  }
  
  public static String decaesar( String s )
  {
    StringBuffer ergebnis = new StringBuffer();
    
    for( int i = 0; i < s.length(); i++ )
    {
      int c = s.charAt( i );

      if ( (c >= 'A') && (c <= 'z') ) {
        c -= key;
        if( (c < 'a') && (c > 'Z') )
          c = 'a' + ('z' - c % 'a') - 1;
        if( c < 'A' )
          c = 'A' + ('Z' - c % 'A') - 1;
      }
      ergebnis.append( (char) c );
    }

    return ergebnis.toString();
  }

Die Methode caesar funktioniert einwandfrei nur bei der decaesar ist der wurm drin. Ich finde da leider auch keine passende lösung wie ich das umsetzen bzw korregieren kann könnte mir da vielleicht einer helfen?

Gruß
Spranta
 
Cäsar ist einfach ein Verschiebechiffre und so sollte es doch relativ einfach sein ihn zu debuggen?

Wikiartikel zum Cäsar

Am Wochenende werd ich mir das glaub ich mal anschauen. Interessiert mich nämlich selbst =)

Gruss
 
Habs grad ausprobiert: die beiden Methoden funktionieren bestens. key - die Zahl, um wieviele Zeichen verschoben wird - muss allerdings noch definiert werden (bzw. würd ich sie den Methoden als Parameter übergeben).

Zum Testen:
Java:
	  public static void main(String[] args) {
		  String plain = "Ein Test";
		  String encrypted = caesar(plain);
		  String decrypted = decaesar(encrypted);
		  System.out.println("plain:     " + plain);
		  System.out.println("encrypted: " + encrypted);
		  System.out.println("decrypted: " + decrypted);		  	  
	  }
 
Zurück