Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package uebung05;
- import static pr.MakeItSimple.readInt;
- import static pr.MakeItSimple.readString;
- import pr.MakeItSimple.PRException;
- public class BaconKodierer {
- // Aufgabenteil e
- static String zeigeNachricht(String steganogramm) {
- String zeigeN = "";
- int laenge = steganogramm.length();
- for (int i = 0; i < laenge; i++) {
- char stega = steganogramm.charAt(i);
- if (stega >= 'A' && stega <= 'Z') {
- zeigeN = zeigeN + "g";
- }
- if (stega >= 'a' && stega <= 'z') {
- zeigeN = zeigeN + "k";
- }
- if (stega == 'ä' || stega == 'ö' || stega == 'ü') {
- zeigeN = zeigeN + "k";
- }
- if (stega == 'Ä' || stega == 'Ö' || stega == 'Ü') {
- zeigeN = zeigeN + "g";
- }
- if (stega > ' ' && stega < 'A') {
- i++;
- }
- if (stega > 'Z' && stega < 'a') {
- i++;
- }
- }
- return zeigeN;
- }
- // Aufgabenteil d
- static String versteckeNachricht(String nachricht, String traegerMedium) {
- String gereinigteNachricht = reinigeNachricht(nachricht);
- String kodierteNachricht = kodiereNachricht(gereinigteNachricht);
- String medium = "";
- int k = 0;
- if (traegerMedium.length() >= kodierteNachricht.length()) {
- for (int i = 0; i < traegerMedium.length(); i++) {
- char trager = traegerMedium.charAt(i);
- if (k < kodierteNachricht.length()) {
- char code = kodierteNachricht.charAt(k);
- if (code == 'g' && trager >= 'a' && trager <= 'z') {
- medium = medium + (char) ((trager - 'a') + 'A');
- } else if (code == 'g' && trager >= 'A' && trager <= 'Z') {
- medium = medium + trager;
- } else if (trager >= ' ' && trager < 'A') {
- k--;
- medium = medium + trager;
- }
- if (trager > 'Z' && trager < 'a') {
- medium = medium + trager;
- }
- if (trager > 'z') {
- medium = medium + trager;
- }
- if (code == 'k' && trager >= 'A' && trager <= 'Z') {
- medium = medium + (char) ((trager - 'A') + 'a');
- }
- if (code == 'k' && trager >= 'a' && trager <= 'z') {
- medium = medium + trager;
- }
- if (code == 'k' && trager == 'ä') {
- medium = medium + trager;
- }
- if (code == 'k' && trager == 'ö') {
- medium = medium + trager;
- }
- if (code == 'k' && trager == 'ü') {
- medium = medium + trager;
- }
- if (code == 'g' && trager == 'ä') {
- medium = medium + 'Ä';
- }
- if (code == 'g' && trager == 'ö') {
- medium = medium + 'Ö';
- }
- if (code == 'g' && trager == 'ü') {
- medium = medium + 'Ü';
- }
- if (code == 'k' && trager == 'Ä') {
- medium = medium + 'ä';
- }
- if (code == 'k' && trager == 'Ö') {
- medium = medium + 'ö';
- }
- if (code == 'k' && trager == 'Ü') {
- medium = medium + 'ü';
- }
- if (code == 'g' && trager == 'Ä') {
- medium = medium + trager;
- }
- if (code == 'g' && trager == 'Ö') {
- medium = medium + trager;
- }
- if (code == 'g' && trager == 'Ü') {
- medium = medium + trager;
- }
- }
- else {
- medium = medium + trager;
- }
- k++;
- }
- return medium;
- }
- else
- throw new PRException("TraegerMedium ist zu kurz");
- }
- // Aufgabenteil c
- static String dekodiereNachricht(String binaerCode) {
- String[] code = { "kkkkk", "kkkkg", "kkkgk", "kkkgg", "kkgkk", "kkgkg", "kkggk", "kkggg", "kgkkk", "kgkkg",
- "kgkgk", "kgkgg", "kggkk", "kggkg", "kgggk", "kgggg", "gkkkk", "gkkkg", "gkkgk", "gkkgg", "gkgkk",
- "gkgkg", "gkggk", "gkggg" };
- int laenge = binaerCode.length();
- String str = "";
- String codeon = "";
- for (int i = 0; i < laenge; i++) {
- str = str + binaerCode.charAt(i);
- if (str.length() == 5 && str.equals(code[0])) {
- codeon += "A";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[1])) {
- codeon += "B";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[2])) {
- codeon += "C";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[3])) {
- codeon += "D";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[4])) {
- codeon += "E";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[5])) {
- codeon += "F";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[6])) {
- codeon += "G";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[7])) {
- codeon += "H";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[8])) {
- codeon += "I";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[9])) {
- codeon += "K";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[10])) {
- codeon += "L";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[11])) {
- codeon += "M";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[12])) {
- codeon += "N";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[13])) {
- codeon += "O";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[14])) {
- codeon += "P";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[15])) {
- codeon += "Q";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[16])) {
- codeon += "R";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[17])) {
- codeon += "S";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[18])) {
- codeon += "T";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[19])) {
- codeon += "U";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[20])) {
- codeon += "W";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[21])) {
- codeon += "X";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[22])) {
- codeon += "Y";
- str = "";
- }
- if (str.length() == 5 && str.equals(code[23])) {
- codeon += "Z";
- str = "";
- }
- if (str.length() == 5 && !str.equals(code[0]) && !str.equals(code[1]) && !str.equals(code[2])
- && !str.equals(code[3]) && !str.equals(code[4]) && !str.equals(code[5]) && !str.equals(code[6])
- && !str.equals(code[7]) && !str.equals(code[8]) && !str.equals(code[9]) && !str.equals(code[10])
- && !str.equals(code[11]) && !str.equals(code[12]) && !str.equals(code[13]) && !str.equals(code[14])
- && !str.equals(code[15]) && !str.equals(code[16]) && !str.equals(code[17]) && !str.equals(code[18])
- && !str.equals(code[19]) && !str.equals(code[20]) && !str.equals(code[21]) && !str.equals(code[22])
- && !str.equals(code[23])) {
- codeon += "#";
- str = "";
- }
- }
- return codeon;
- }
- // Aufgabenteil b
- static String kodiereNachricht(String gereinigteNachricht) {
- int laenge = gereinigteNachricht.length();
- String[] code = { "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" };
- String str = "";
- String codeon = "";
- for (int i = 0; i < laenge; i++) {
- char zerl = gereinigteNachricht.charAt(i);
- if (zerl > ' ' && zerl < 'A' || zerl > 'Z' && zerl < 'a' || zerl > 'z') {
- throw new PRException("Ungültiger Code");
- }
- if (zerl >= 'a' && zerl <= 'z') {
- zerl = (char) ((zerl - 'a') + 'A');
- }
- String vergleich = zerl + str;
- if (vergleich.equals(code[0])) {// A
- codeon = codeon + "kkkkk";
- }
- else if (vergleich.equals(code[1])) { // B
- codeon = codeon + "kkkkg";
- }
- else if (vergleich.equals(code[2])) {// C
- codeon = codeon + "kkkgk";
- }
- else if (vergleich.equals(code[3])) {// D
- codeon += "kkkgg";
- }
- else if (vergleich.equals(code[4])) {// E
- codeon += "kkgkk";
- }
- else if (vergleich.equals(code[5])) {// F
- codeon += "kkgkg";
- }
- else if (vergleich.equals(code[6])) {// G
- codeon += "kkggk";
- } else if (vergleich.equals(code[7])) {// H
- codeon += "kkggg";
- } else if (vergleich.equals(code[8])) {// I
- codeon += "kgkkk";
- }
- else if (vergleich.equals(code[9])) {// J
- codeon += "kgkkk";
- }
- else if (vergleich.equals(code[10])) { // K
- codeon += "kgkkg";
- }
- else if (vergleich.equals(code[11])) { // L
- codeon += "kgkgk";
- }
- else if (vergleich.equals(code[12])) {// M
- codeon += "kgkgg";
- } else if (vergleich.equals(code[13])) {// N
- codeon += "kggkk";
- } else if (vergleich.equals(code[14])) {// O
- codeon += "kggkg";
- }
- else if (vergleich.equals(code[15])) {// P
- codeon += "kgggk";
- } else if (vergleich.equals(code[16])) {// Q
- codeon += "kgggg";
- } else if (vergleich.equals(code[17])) {// R
- codeon += "gkkkk";
- } else if (vergleich.equals(code[18])) { // S
- codeon += "gkkkg";
- } else if (vergleich.equals(code[19])) {// T
- codeon += "gkkgk";
- } else if (vergleich.equals(code[20])) {// U
- codeon += "gkkgg";
- }
- else if (vergleich.equals(code[21])) {// V
- codeon += "gkkgg";
- }
- else if (vergleich.equals(code[22])) {// W
- codeon += "gkgkk";
- }
- else if (vergleich.equals(code[23])) {// X
- codeon += "gkgkg";
- }
- else if (vergleich.equals(code[24])) {// Y
- codeon += "gkggk";
- } else if (vergleich.equals(code[25])) { // Z
- codeon += "gkggg";
- }
- }
- return codeon;
- }
- // Aufgabenteil a
- static String reinigeNachricht(String nachricht) {
- int laenge = nachricht.length();
- String gereinigteNachricht = "";
- for (int i = 0; i < laenge; i++) {
- char ch = nachricht.charAt(i);
- if (ch >= 'A' && ch <= 'Z') {
- gereinigteNachricht = gereinigteNachricht + ch;
- } else if (ch == 'Ä' || ch == 'ä') {
- gereinigteNachricht = gereinigteNachricht + "AE";
- } else if (ch == 'Ö' || ch == 'ö') {
- gereinigteNachricht = gereinigteNachricht + "OE";
- } else if (ch == 'Ü' || ch == 'ü') {
- gereinigteNachricht = gereinigteNachricht + "UE";
- } else if (ch >= 'a' && ch <= 'z') {
- gereinigteNachricht = gereinigteNachricht + (char) ((ch - 'a') + 'A');
- }
- }
- return gereinigteNachricht;
- }
- // Aufgabenteil g
- public static void main(String[] args) {
- for (int i = 0; i < 1;) {
- System.out.println("");
- System.out.println("Bitte wählen Sie aus");
- System.out.println("1. Botschaft verstecken");
- System.out.println("2. Botschaft sichtbar machen");
- System.out.println("3. Demo");
- System.out.println("4. Programm beenden");
- int auswaehlen = readInt();
- if (auswaehlen == 1) {
- System.out.println("Geben Sie eine Nachricht ein!");
- String nachricht = readString();
- System.out.println("Geben Sie ein TraegerMedium ein!");
- String traegerEingeben = readString();
- String traeger = versteckeNachricht(nachricht, traegerEingeben);
- System.out.println("Versteckte Nachricht: " + traeger);
- }
- if (auswaehlen == 2) {
- System.out.println("Geben Sie ein Steganogramm ein, die kodierte Nachricht wird zurück geliefert!");
- String steganoGramm = readString();
- String steganozuCode = zeigeNachricht(steganoGramm);
- String steganozuDecodieren = dekodiereNachricht(steganozuCode);
- System.out.println("Kodierte Nachricht: " + steganozuDecodieren);
- }
- if (auswaehlen == 3) {
- String nachricht = "Treffen uns um drei Uhr am Bahnhof!";
- String traegerMedium = "Mein Name ist Juan Sanchez Villa-Lobos Ramirez, oberster Metallurge am Hofe König Karl V. von Spanien; ich wurde 896"
- + " vor Christus in Ägypten geboren und bin unsterblich seit 846 vor Christus.";
- String nachtrager = versteckeNachricht(nachricht, traegerMedium);
- String steganozuCode = zeigeNachricht(nachtrager);
- String steganozuDecodieren = dekodiereNachricht(steganozuCode);
- System.out.println(steganozuDecodieren);
- }
- if (auswaehlen == 4) {
- i++;
- System.out.println("Programm wird beendet");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement