Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Cäsar (Zeichenketten)

Schreiben Sie ein Programm, das einen Text nach dem Cäsar-AlgorithmusDie ursprüngliche Cäsar-Verschlüsselung nach Gajus Julius Cäsar (100 v. Chr. - 44 v. Chr.) verwendete den Schlüssel 3. verschlüsselt. Dabei wird zu jedem Buchstaben im Alphabet eine fixe Zahl (= Code) dazugezählt. Nach "Z" soll wieder "A" folgen. Mit der negativen Zahl als Code kann der Text wieder entschlüsselt werden.

Knacken Sie damit die Botschaft: "Hslh qhjah lza"

Caesar Verschlüsselungs-Scheibe

Achtung: Das abgebildete «Cäsar-Rad» hat nicht die gesuchte Einstellung.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

3 Lösung(en)

/****************************************************************************
* <code>                          Caesar
* </code> 
* ...
*
* @author Philipp Gressly (phi@gressly.ch) http://www.gressly.ch/schulung
* @version 0.99 -- 2004-Jan-21 08:24
*/
/* History: 2004-Jan-21 08:24 (first implementations)
*****************************************************************************/
public class Caesar{


  /****************************************************************************
  * <code>                          Caesar
  * </code> 
  * 
  *
  * @param 
  * @return 
  */
  /* History: 2004-Jan-21 08:24 (first implementations)
  *****************************************************************************/
  public  Caesar(int code, String orig)
  {
    String crypt = "";
    for(int i = 0; i < orig.length(); i++) {
      char oc = orig.charAt(i); //oc: original character
      boolean isCap = false;
      if ('A' <= oc && oc <= 'Z') {
	isCap = true;
	oc = (char) (oc + 'a' - 'A');
      }
      if('a' <= oc && oc <= 'z') {
	oc = (char) (oc + code);
	int diff = 'z' - 'a' + 1;
	if(oc > 'z') {
	  oc = (char) (oc - diff);
	}
	if(oc < 'a') {
	  oc = (char) (oc + diff);
	}
      }
      if(isCap) {
	oc = (char) (oc + 'A' - 'a');
      }
      crypt += "" + oc;
    }
    System.out.println("Crypt: " + crypt);
  }  // end method: Caesar

  /****************************************************************************
  * <code>                          main
  * </code> 
  * 
  *
  * @param 
  * @return 
  */
  /* History: 2004-Jan-21 08:24 (first implementations)
  *****************************************************************************/
  public static void main(String[] args)
  {
    if(args.length != 2) {
      System.out.println("Call \nCaesar <code> <String>");
      return;
    }
    new Caesar(Integer.parseInt(args[0]), args[1]);
    
  } // end main 

}  // end class: Caesar
                
function caesarCipher(cipherTxt, rotation) {
  cipherTxt = cipherTxt.toUpperCase();
  rotation = rotation || 13;
  let plain = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
      // rotationsalfabet:
      cipher = plain.substring(rotation) + plain.substring(0, rotation),
      plainTxt = '';
  for (let i = 0; i < cipherTxt.length; i++) {
    // alle zeichen außer großbuchstaben einfach übernehmen
    if (plain.indexOf(cipherTxt[i]) == -1) plainTxt += cipherTxt[i];
    else plainTxt += plain[cipher.indexOf(cipherTxt[i])];
  }
  return plainTxt;
}

// alle rotationen durchlaufen und gucken, was passiert
for (let i = 1; i <= 25; i++)
  console.log(caesarCipher('Hslh qhjah lza', i));            // lissalanda@gmx.at
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

// NET Core 3.x; C# 8.x

using System;
using System.Linq;

namespace CS_Aufgabe_Caesar
{
    class Program
    {
        static void Main(string[] args)
        {
            var lstChar = Enumerable.Range('A', 26).Select(x => (char)x).ToList();
            char GetChar(char c, int v) => lstChar.Contains(c) ? lstChar[(lstChar.IndexOf(c) + v) % 26] : c;

            var arr = "Hslh qhjah lza".ToUpper().ToCharArray();
            Enumerable.Range(0, 26).Select(y => string.Join("", arr.Select(x => GetChar(x, y)).ToList())).ToList().ForEach(Console.WriteLine);
        }
    }
}

                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

Die Botschaft lautet: "Der Würfel ist geworfen." Natürlich lateinisch! Da damals nur die wenigsten Leute lesen konnten, galt das Verfahren als sicher.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: Mittel
Webcode: kb99-fe5k
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen