Advertisement
ynot2510

Untitled

Nov 12th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.88 KB | None | 0 0
  1. package uebung05;
  2.  
  3. import static pr.MakeItSimple.readInt;
  4. import static pr.MakeItSimple.readString;
  5.  
  6. import pr.MakeItSimple.PRException;
  7.  
  8. public class BaconKodierer {
  9.  
  10. // Aufgabenteil e
  11. static String zeigeNachricht(String steganogramm) {
  12.  
  13. String zeigeN = "";
  14.  
  15. int laenge = steganogramm.length();
  16.  
  17. for (int i = 0; i < laenge; i++) {
  18.  
  19. char stega = steganogramm.charAt(i);
  20.  
  21. if (stega >= 'A' && stega <= 'Z') {
  22. zeigeN = zeigeN + "g";
  23. }
  24.  
  25. if (stega >= 'a' && stega <= 'z') {
  26. zeigeN = zeigeN + "k";
  27. }
  28.  
  29. if (stega == 'ä' || stega == 'ö' || stega == 'ü') {
  30. zeigeN = zeigeN + "k";
  31. }
  32.  
  33. if (stega == 'Ä' || stega == 'Ö' || stega == 'Ü') {
  34. zeigeN = zeigeN + "g";
  35. }
  36.  
  37. if (stega > ' ' && stega < 'A') {
  38. i++;
  39. }
  40.  
  41. if (stega > 'Z' && stega < 'a') {
  42. i++;
  43. }
  44. }
  45.  
  46. return zeigeN;
  47.  
  48. }
  49.  
  50. // Aufgabenteil d
  51. static String versteckeNachricht(String nachricht, String traegerMedium) {
  52.  
  53. String gereinigteNachricht = reinigeNachricht(nachricht);
  54.  
  55. String kodierteNachricht = kodiereNachricht(gereinigteNachricht);
  56.  
  57. String medium = "";
  58. int k = 0;
  59.  
  60. if (traegerMedium.length() >= kodierteNachricht.length()) {
  61.  
  62. for (int i = 0; i < traegerMedium.length(); i++) {
  63.  
  64. char trager = traegerMedium.charAt(i);
  65. if (k < kodierteNachricht.length()) {
  66. char code = kodierteNachricht.charAt(k);
  67.  
  68. if (code == 'g' && trager >= 'a' && trager <= 'z') {
  69. medium = medium + (char) ((trager - 'a') + 'A');
  70. } else if (code == 'g' && trager >= 'A' && trager <= 'Z') {
  71. medium = medium + trager;
  72. } else if (trager >= ' ' && trager < 'A') {
  73. k--;
  74. medium = medium + trager;
  75. }
  76.  
  77. if (trager > 'Z' && trager < 'a') {
  78. medium = medium + trager;
  79. }
  80.  
  81. if (trager > 'z') {
  82. medium = medium + trager;
  83. }
  84.  
  85. if (code == 'k' && trager >= 'A' && trager <= 'Z') {
  86. medium = medium + (char) ((trager - 'A') + 'a');
  87. }
  88.  
  89. if (code == 'k' && trager >= 'a' && trager <= 'z') {
  90. medium = medium + trager;
  91. }
  92. if (code == 'k' && trager == 'ä') {
  93. medium = medium + trager;
  94. }
  95. if (code == 'k' && trager == 'ö') {
  96. medium = medium + trager;
  97. }
  98. if (code == 'k' && trager == 'ü') {
  99. medium = medium + trager;
  100. }
  101. if (code == 'g' && trager == 'ä') {
  102. medium = medium + 'Ä';
  103. }
  104. if (code == 'g' && trager == 'ö') {
  105. medium = medium + 'Ö';
  106. }
  107. if (code == 'g' && trager == 'ü') {
  108. medium = medium + 'Ü';
  109. }
  110. if (code == 'k' && trager == 'Ä') {
  111. medium = medium + 'ä';
  112. }
  113. if (code == 'k' && trager == 'Ö') {
  114. medium = medium + 'ö';
  115. }
  116. if (code == 'k' && trager == 'Ü') {
  117. medium = medium + 'ü';
  118. }
  119. if (code == 'g' && trager == 'Ä') {
  120. medium = medium + trager;
  121. }
  122. if (code == 'g' && trager == 'Ö') {
  123. medium = medium + trager;
  124. }
  125. if (code == 'g' && trager == 'Ü') {
  126. medium = medium + trager;
  127. }
  128. }
  129.  
  130. else {
  131. medium = medium + trager;
  132. }
  133. k++;
  134. }
  135. return medium;
  136. }
  137.  
  138. else
  139. throw new PRException("TraegerMedium ist zu kurz");
  140.  
  141. }
  142.  
  143. // Aufgabenteil c
  144. static String dekodiereNachricht(String binaerCode) {
  145.  
  146. String[] code = { "kkkkk", "kkkkg", "kkkgk", "kkkgg", "kkgkk", "kkgkg", "kkggk", "kkggg", "kgkkk", "kgkkg",
  147. "kgkgk", "kgkgg", "kggkk", "kggkg", "kgggk", "kgggg", "gkkkk", "gkkkg", "gkkgk", "gkkgg", "gkgkk",
  148. "gkgkg", "gkggk", "gkggg" };
  149.  
  150. int laenge = binaerCode.length();
  151. String str = "";
  152. String codeon = "";
  153.  
  154. for (int i = 0; i < laenge; i++) {
  155. str = str + binaerCode.charAt(i);
  156. if (str.length() == 5 && str.equals(code[0])) {
  157. codeon += "A";
  158. str = "";
  159. }
  160.  
  161. if (str.length() == 5 && str.equals(code[1])) {
  162. codeon += "B";
  163. str = "";
  164. }
  165.  
  166. if (str.length() == 5 && str.equals(code[2])) {
  167. codeon += "C";
  168. str = "";
  169. }
  170.  
  171. if (str.length() == 5 && str.equals(code[3])) {
  172. codeon += "D";
  173. str = "";
  174. }
  175.  
  176. if (str.length() == 5 && str.equals(code[4])) {
  177. codeon += "E";
  178. str = "";
  179. }
  180.  
  181. if (str.length() == 5 && str.equals(code[5])) {
  182. codeon += "F";
  183. str = "";
  184. }
  185.  
  186. if (str.length() == 5 && str.equals(code[6])) {
  187. codeon += "G";
  188. str = "";
  189. }
  190.  
  191. if (str.length() == 5 && str.equals(code[7])) {
  192. codeon += "H";
  193. str = "";
  194. }
  195.  
  196. if (str.length() == 5 && str.equals(code[8])) {
  197. codeon += "I";
  198. str = "";
  199. }
  200.  
  201. if (str.length() == 5 && str.equals(code[9])) {
  202. codeon += "K";
  203. str = "";
  204. }
  205.  
  206. if (str.length() == 5 && str.equals(code[10])) {
  207. codeon += "L";
  208. str = "";
  209. }
  210.  
  211. if (str.length() == 5 && str.equals(code[11])) {
  212. codeon += "M";
  213. str = "";
  214. }
  215.  
  216. if (str.length() == 5 && str.equals(code[12])) {
  217. codeon += "N";
  218. str = "";
  219.  
  220. }
  221.  
  222. if (str.length() == 5 && str.equals(code[13])) {
  223. codeon += "O";
  224. str = "";
  225. }
  226.  
  227. if (str.length() == 5 && str.equals(code[14])) {
  228. codeon += "P";
  229. str = "";
  230. }
  231.  
  232. if (str.length() == 5 && str.equals(code[15])) {
  233. codeon += "Q";
  234. str = "";
  235. }
  236.  
  237. if (str.length() == 5 && str.equals(code[16])) {
  238. codeon += "R";
  239. str = "";
  240. }
  241.  
  242. if (str.length() == 5 && str.equals(code[17])) {
  243. codeon += "S";
  244. str = "";
  245. }
  246.  
  247. if (str.length() == 5 && str.equals(code[18])) {
  248. codeon += "T";
  249. str = "";
  250. }
  251.  
  252. if (str.length() == 5 && str.equals(code[19])) {
  253. codeon += "U";
  254. str = "";
  255. }
  256.  
  257. if (str.length() == 5 && str.equals(code[20])) {
  258. codeon += "W";
  259. str = "";
  260. }
  261.  
  262. if (str.length() == 5 && str.equals(code[21])) {
  263. codeon += "X";
  264. str = "";
  265. }
  266.  
  267. if (str.length() == 5 && str.equals(code[22])) {
  268. codeon += "Y";
  269. str = "";
  270. }
  271.  
  272. if (str.length() == 5 && str.equals(code[23])) {
  273. codeon += "Z";
  274. str = "";
  275. }
  276.  
  277. if (str.length() == 5 && !str.equals(code[0]) && !str.equals(code[1]) && !str.equals(code[2])
  278. && !str.equals(code[3]) && !str.equals(code[4]) && !str.equals(code[5]) && !str.equals(code[6])
  279. && !str.equals(code[7]) && !str.equals(code[8]) && !str.equals(code[9]) && !str.equals(code[10])
  280. && !str.equals(code[11]) && !str.equals(code[12]) && !str.equals(code[13]) && !str.equals(code[14])
  281. && !str.equals(code[15]) && !str.equals(code[16]) && !str.equals(code[17]) && !str.equals(code[18])
  282. && !str.equals(code[19]) && !str.equals(code[20]) && !str.equals(code[21]) && !str.equals(code[22])
  283. && !str.equals(code[23])) {
  284.  
  285. codeon += "#";
  286. str = "";
  287. }
  288. }
  289. return codeon;
  290. }
  291.  
  292. // Aufgabenteil b
  293. static String kodiereNachricht(String gereinigteNachricht) {
  294.  
  295. int laenge = gereinigteNachricht.length();
  296.  
  297. String[] code = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S",
  298. "T", "U", "V", "W", "X", "Y", "Z" };
  299.  
  300. String str = "";
  301. String codeon = "";
  302.  
  303. for (int i = 0; i < laenge; i++) {
  304. char zerl = gereinigteNachricht.charAt(i);
  305.  
  306. if (zerl > ' ' && zerl < 'A' || zerl > 'Z' && zerl < 'a' || zerl > 'z') {
  307. throw new PRException("Ungültiger Code");
  308. }
  309.  
  310. if (zerl >= 'a' && zerl <= 'z') {
  311. zerl = (char) ((zerl - 'a') + 'A');
  312. }
  313.  
  314. String vergleich = zerl + str;
  315.  
  316. if (vergleich.equals(code[0])) {// A
  317. codeon = codeon + "kkkkk";
  318. }
  319.  
  320. else if (vergleich.equals(code[1])) { // B
  321. codeon = codeon + "kkkkg";
  322. }
  323.  
  324. else if (vergleich.equals(code[2])) {// C
  325. codeon = codeon + "kkkgk";
  326. }
  327.  
  328. else if (vergleich.equals(code[3])) {// D
  329. codeon += "kkkgg";
  330. }
  331.  
  332. else if (vergleich.equals(code[4])) {// E
  333. codeon += "kkgkk";
  334. }
  335.  
  336. else if (vergleich.equals(code[5])) {// F
  337. codeon += "kkgkg";
  338. }
  339.  
  340. else if (vergleich.equals(code[6])) {// G
  341. codeon += "kkggk";
  342. } else if (vergleich.equals(code[7])) {// H
  343. codeon += "kkggg";
  344. } else if (vergleich.equals(code[8])) {// I
  345. codeon += "kgkkk";
  346. }
  347.  
  348. else if (vergleich.equals(code[9])) {// J
  349. codeon += "kgkkk";
  350. }
  351.  
  352. else if (vergleich.equals(code[10])) { // K
  353. codeon += "kgkkg";
  354. }
  355.  
  356. else if (vergleich.equals(code[11])) { // L
  357. codeon += "kgkgk";
  358. }
  359.  
  360. else if (vergleich.equals(code[12])) {// M
  361. codeon += "kgkgg";
  362.  
  363. } else if (vergleich.equals(code[13])) {// N
  364. codeon += "kggkk";
  365. } else if (vergleich.equals(code[14])) {// O
  366. codeon += "kggkg";
  367. }
  368.  
  369. else if (vergleich.equals(code[15])) {// P
  370. codeon += "kgggk";
  371. } else if (vergleich.equals(code[16])) {// Q
  372. codeon += "kgggg";
  373. } else if (vergleich.equals(code[17])) {// R
  374. codeon += "gkkkk";
  375. } else if (vergleich.equals(code[18])) { // S
  376. codeon += "gkkkg";
  377. } else if (vergleich.equals(code[19])) {// T
  378. codeon += "gkkgk";
  379. } else if (vergleich.equals(code[20])) {// U
  380. codeon += "gkkgg";
  381. }
  382.  
  383. else if (vergleich.equals(code[21])) {// V
  384. codeon += "gkkgg";
  385. }
  386.  
  387. else if (vergleich.equals(code[22])) {// W
  388. codeon += "gkgkk";
  389. }
  390.  
  391. else if (vergleich.equals(code[23])) {// X
  392. codeon += "gkgkg";
  393. }
  394.  
  395. else if (vergleich.equals(code[24])) {// Y
  396. codeon += "gkggk";
  397. } else if (vergleich.equals(code[25])) { // Z
  398. codeon += "gkggg";
  399. }
  400. }
  401. return codeon;
  402. }
  403.  
  404. // Aufgabenteil a
  405. static String reinigeNachricht(String nachricht) {
  406. int laenge = nachricht.length();
  407. String gereinigteNachricht = "";
  408.  
  409. for (int i = 0; i < laenge; i++) {
  410. char ch = nachricht.charAt(i);
  411. if (ch >= 'A' && ch <= 'Z') {
  412. gereinigteNachricht = gereinigteNachricht + ch;
  413. } else if (ch == 'Ä' || ch == 'ä') {
  414. gereinigteNachricht = gereinigteNachricht + "AE";
  415. } else if (ch == 'Ö' || ch == 'ö') {
  416. gereinigteNachricht = gereinigteNachricht + "OE";
  417. } else if (ch == 'Ü' || ch == 'ü') {
  418. gereinigteNachricht = gereinigteNachricht + "UE";
  419. } else if (ch >= 'a' && ch <= 'z') {
  420. gereinigteNachricht = gereinigteNachricht + (char) ((ch - 'a') + 'A');
  421. }
  422. }
  423. return gereinigteNachricht;
  424. }
  425.  
  426. // Aufgabenteil g
  427. public static void main(String[] args) {
  428.  
  429. for (int i = 0; i < 1;) {
  430. System.out.println("");
  431. System.out.println("Bitte wählen Sie aus");
  432. System.out.println("1. Botschaft verstecken");
  433. System.out.println("2. Botschaft sichtbar machen");
  434. System.out.println("3. Demo");
  435. System.out.println("4. Programm beenden");
  436.  
  437. int auswaehlen = readInt();
  438. if (auswaehlen == 1) {
  439. System.out.println("Geben Sie eine Nachricht ein!");
  440. String nachricht = readString();
  441. System.out.println("Geben Sie ein TraegerMedium ein!");
  442. String traegerEingeben = readString();
  443. String traeger = versteckeNachricht(nachricht, traegerEingeben);
  444. System.out.println("Versteckte Nachricht: " + traeger);
  445. }
  446.  
  447. if (auswaehlen == 2) {
  448. System.out.println("Geben Sie ein Steganogramm ein, die kodierte Nachricht wird zurück geliefert!");
  449.  
  450. String steganoGramm = readString();
  451. String steganozuCode = zeigeNachricht(steganoGramm);
  452. String steganozuDecodieren = dekodiereNachricht(steganozuCode);
  453.  
  454. System.out.println("Kodierte Nachricht: " + steganozuDecodieren);
  455. }
  456.  
  457. if (auswaehlen == 3) {
  458.  
  459. String nachricht = "Treffen uns um drei Uhr am Bahnhof!";
  460.  
  461. String traegerMedium = "Mein Name ist Juan Sanchez Villa-Lobos Ramirez, oberster Metallurge am Hofe König Karl V. von Spanien; ich wurde 896"
  462. + " vor Christus in Ägypten geboren und bin unsterblich seit 846 vor Christus.";
  463.  
  464. String nachtrager = versteckeNachricht(nachricht, traegerMedium);
  465.  
  466.  
  467. String steganozuCode = zeigeNachricht(nachtrager);
  468.  
  469. String steganozuDecodieren = dekodiereNachricht(steganozuCode);
  470.  
  471. System.out.println(steganozuDecodieren);
  472.  
  473. }
  474.  
  475. if (auswaehlen == 4) {
  476. i++;
  477. System.out.println("Programm wird beendet");
  478. }
  479. }
  480. }
  481. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement