Tracks
/
Haskell
Haskell
/
Übungen
/
Atbash-Chiffre
Atbash-Chiffre

Atbash-Chiffre

Mittel

Anleitung

Erstelle eine Implementierung der Atbash-Chiffre, eines alten Verschlüsselungssystems aus dem Nahen Osten.

Die Atbash-Chiffre ist eine einfache Substitutionschiffre, bei der alle Buchstaben des Alphabets so vertauscht werden, dass das resultierende Alphabet rückwärts läuft. Der erste Buchstabe wird durch den letzten ersetzt, der zweite durch den vorletzten und so weiter.

Eine Atbash-Chiffre für das lateinische Alphabet sieht so aus:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: zyxwvutsrqponmlkjihgfedcba

Sie ist eine sehr schwache Chiffre, denn sie hat nur einen einzigen möglichen Schlüssel und ist eine einfache monoalphabetische Substitutionschiffre. Zu ihrer Zeit war das allerdings möglicherweise kein Problem.

Der Geheimtext wird in Gruppen fester Länge geschrieben, wobei die traditionelle Gruppengröße bei 5 Buchstaben liegt. Zahlen bleiben unverändert stehen und Satzzeichen werden weggelassen. Das soll es erschweren, anhand von Wortgrenzen auf den Inhalt zu schließen. Der gesamte Text wird in Kleinbuchstaben kodiert.

Beispiele

  • Das Kodieren von test ergibt gvhg
  • Das Kodieren von x123 yes ergibt c123b vh
  • Das Dekodieren von gvhg ergibt test
  • Das Dekodieren von gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt ergibt thequickbrownfoxjumpsoverthelazydog

Hinweise

Du musst die Funktionen decode und encode implementieren, die einen String mit einer Atbash-Chiffre dekodieren und kodieren. Wenn du dir bei den Typen unsicher bist, kannst du die vorgegebene Signatur verwenden, aber lass dich davon nicht in deiner Kreativität einschränken.

Diese Übung arbeitet mit Textdaten. Aus historischen Gründen ist der String-Typ von Haskell gleichbedeutend mit [Char], einer Liste von Zeichen. Für den effizienteren Umgang mit Textdaten kannst du den Text-Typ verwenden.

Als optionale Erweiterung dieser Übung kannst du

  • dich über String-Typen in Haskell informieren.
  • - text zu deiner Liste der Abhängigkeiten in package.yaml hinzufügen.
  • Data.Text auf die folgende Weise importieren:
import qualified Data.Text as T
import           Data.Text (Text)
  • den Text-Typ verwenden, z. B. decode :: Text -> Text, und Data.Text-Kombinatoren als z. B. T.pack ansprechen.
  • die Dokumentation zu Data.Text nachschlagen.
  • alle Vorkommen von String in Atbash.hs durch Text ersetzen, d. h.:
decode :: Text -> Text
decode cipherText = ...

encode :: Text -> Text
encode plainText = ...

Dieser Teil ist völlig optional.


Quelle

WikipediaDer Link öffnet sich in einem neuen Fenster oder Tab
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Haskell Exercism

Bereit, mit Atbash-Chiffre zu starten?

Melde dich bei Exercism an, um Haskell mit 107 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.