package Crypter; /** * Interface für die Verschlüsselung. * * Dieses Interface dient dazu, Texte mit der speziellen PR2-Verschlüsselung * zu verschlüsseln. Die Verschlüsselung funktioniert so, dass bestimmte * Zeichen durch andere ersetzt werden. * * Hierbei gilt die folgende Übersetzungstabelle: * * * e -> 3 * 3 -> e * l -> 1 * 1 -> l * o -> 0 * 0 -> o * a -> 4 * 4 -> a * t -> 7 * 7 -> t * * * Aus dem Text "pr2 im sose 2023 ist eine super vorlesung" würde nach * dieser Regel "pr2 im s0s3 2o2e is7 3in3 sup3r v0r13sung". * * Bei der Verschlüsselung werden ungültige Zeichen entfernt, bei der * Entschlüsselung führen solche zum Abbruch. */ public interface Crypter { /** * Erlaubte Zeichen im Klartext. */ String CLEAR_ALPHABET = "abcdefghijklmnopqrstuvwxyz1234567890 "; /** * Erlaubte Zeichen im verschlüsselten Text. */ String CYPHER_ALPHABET = "4bcd3fghijk1mn0pqrs7uvwxyzl2ea56t89o "; /** * Verschlüsselt den gegebenen Text. Enthält die Eingabe Großbuchstaben, * so werden diese in Kleinbuchstaben umgewandelt. Ungültige Zeichen * werden ignoriert und nicht in den verschlüsselten Text übernommen. * * @param input Text, der verschlüsselt werden soll. * @return Verschlüsselter Text. */ String encrypt(String input); /** * Entschlüsselt den gegebenen Text. Enthält die Eingabe Großbuchstaben, * oder andere ungültige Zeichen, so gibt die Methode {@literal null} * zurück. * * @param input Text, der entschlüsselt werden soll. * @return Entschlüsselter Text oder {@literal null}. */ String decrypt(String input); }