Kryptologie - Informatik

Kryptologie - Informatik Kryptologie - Informatik

informatik.bildung.rp.de
von informatik.bildung.rp.de Mehr von diesem Publisher
08.10.2013 Aufrufe

PROCEDURE PROCEDURE passwortabfrage; VAR V VAR A R i: integer; hilfs: STRING; BEGIN BEGIN hilfs := ‚‘; writeln(‚Bitte geben Sie das Verschlüsselungspasswort ein: ‚); readln(passwortstr); IF I IF F (passwortstr = ‚‘) THEN THEN passwortstr := ‚ZZZ‘; IF IF NOT NNOT NOT O T modus AND A AND N D (passwortstr = ‚ZZZ‘) THEN THEN passwortstr := decodierung; passwortlaenge := length(passwortstr); FOR F FOR O R i := 1 TO TO TTO TO O passwortlaenge DO DO DO CASE CASE passwortstr[i] OF OF OF ‚A‘..’Z’: hilfs := concat(hilfs, passwortstr[i]); ‚a‘..’z’: hilfs := concat(hilfs, gross(passwortstr[i])); END E END N D; { FOR CASE } passwortstr := hilfs; passwortlaenge := length(passwortstr); writeln(passwortstr); END E END N D; { Passwortabfrage} BEGIN BEGIN { vigenere } writeln; writeln(‚Willkommen zum Vigenere Codierungs bzw. Decodierungsprogramm‘); writeln(‚Aus dem Passwort werden nur Klein- und Großbuchstaben verwendet. Andere Zeichen werden gelöscht.‘); writeln; passwortabfrage; codezaehler := 0; FOR F FOR O R i := 1 TO T TO O textlaenge DO DO BEGIN BEGIN codezaehler := codezaehler + 1; IF I IF F codezaehler > passwortlaenge THEN THEN codezaehler := 1; CASE CASE textvorlage[i] OF OF ‚A‘..’Z’, ‚a‘..’z’: v := ord(passWortStr[codezaehler]) - ord(‚A‘) + 1; ‚0‘..’9': END E END N D; { CASE } v := (ord(passWortStr[codezaehler]) - ord(‚A‘)) MOD MMOD MOD O D 10 + 1; CASE CASE CASE textvorlage[i] OF OF ‚A‘..’Z’: n := ord(textvorlage[i]) - ord(‚A‘); ‚a‘..’z’: n := ord(textvorlage[i]) - ord(‚a‘); ‚0‘..’9': n := ord(textvorlage[i]) - ord(‚0‘); END E END N D; { CASE } CASE CASE textvorlage[i] OF OF ‚A‘..’Z’, ‚a‘..’z’ :IF IF IIF F modus THEN THEN n := (n + v) MOD MOD 26 ELSE ELSE n := (26 + n - v) MOD MOD 26; ‚0‘..’9' END E END N D; { CASE } CASE CASE textvorlage[i] OF OF :IF IF IIF F modus THEN THEN THEN := (n + v) MOD MOD MOD 10 ELSE ELSE n := (10 + n - v) MOD MOD 10; ‚A‘..’Z’: textvorlage[i] := chr(n + ord(‚A‘)); ‚a‘..’z’: textvorlage[i] := chr(n + ord(‚a‘)); ‚0‘..’9': textvorlage[i] := chr(n + ord(‚0‘)); END E END N D; { CASE } END E END N D; { FOR } text_ausgeben; END EEND END N D; { vigenere } 38

PROCEDURE PROCEDURE textAnalyse (single: boolean); CONST CONST MAX = 225; TYPE TYPE haeuf = ARRAY ARRAY[1..MAX] ARRAY OF O OF F typ3; VAR V VAR A R aktuelle_Anzahl, max_anzahl, vorher, i : integer; B_haeuf : ARRAY ARRAY[‚A‘..’Z’] ARRAY OF OF OOF OF F integer; haeufigkeit : haeuf; FUNCTION FUNCTION sortiert_und_reduziert_auf (VAR VAR VVAR A R h: haeuf; typ, fest: integer): integer; VAR V VAR A R i, k: integer; hilf: typ3; BEGIN BEGIN FOR F FOR O R i := 1 TO TO TTO TO O aktuelle_anzahl - 1 DO DO DO FOR F FOR O R k := i + 1 TO T TO O aktuelle_anzahl DO DO IF IF IIF IF F h[i].anzahl < h[k].anzahl THEN THEN BEGIN BEGIN BEGIN { tauschen } hilf := h[i]; h[i] := h[k]; h[k] := hilf; END END E END N D; { tauschen } sortiert_und_reduziert_auf := fest; IF IF I IF F fest = 26 THEN THEN FOR F FOR O R i := 1 TO T TO O 26 DO DO BEGIN BEGIN buchstaben[typ, i].tripel := haeufigkeit[i].tripel; buchstaben[typ, i].anzahl := round(haeufigkeit[i].anzahl / gesamt * 1000); END END; END END E END N D; { sortiert_und_reduziert_auf } PROCEDURE PROCEDURE histogramm (maxWert: integer); VAR VAR VVAR VAR A R i, k, proMille : integer; faktor : real; BEGIN BEGIN faktor := ((konsole.right - konsole.left) / 8 - 12) / maxWert * gesamt / 1000; FOR FOR FFOR FOR O R i := 1 TO T TO O aktuelle_Anzahl DO DO WITH WITH haeufigkeit[i] DO DO BEGIN BEGIN proMille := round(anzahl / gesamt * 1000); write(tripel, ‚:‘, proMille / 10 : 6 : 1, ‚ % ‚); FOR F FOR O R k := 1 TO TO TTO TO O round(proMille * faktor) DO DO BEGIN BEGIN write(‚•‘); END END; END END writeln; END E END N D; { WITH haeufigkeit } END E END N D; { histogramm } PROCEDURE PROCEDURE titel (ttt: STRING); BEGIN BEGIN writeln; writeln(ttt); writeln; END E END N D; { titel } 39

PROCEDURE PROCEDURE textAnalyse (single: boolean);<br />

CONST CONST MAX = 225;<br />

TYPE TYPE haeuf = ARRAY ARRAY[1..MAX] ARRAY<br />

OF O OF F typ3;<br />

VAR V VAR A R aktuelle_Anzahl, max_anzahl, vorher, i : integer;<br />

B_haeuf : ARRAY ARRAY[‚A‘..’Z’] ARRAY<br />

OF OF OOF OF F integer;<br />

haeufigkeit : haeuf;<br />

FUNCTION FUNCTION sortiert_und_reduziert_auf (VAR VAR VVAR A R h: haeuf; typ, fest: integer): integer;<br />

VAR V VAR A R i, k: integer;<br />

hilf: typ3;<br />

BEGIN<br />

BEGIN<br />

FOR F FOR O R i := 1 TO TO TTO TO O aktuelle_anzahl - 1 DO DO<br />

DO<br />

FOR F FOR O R k := i + 1 TO T TO O aktuelle_anzahl DO<br />

DO<br />

IF IF IIF IF F h[i].anzahl < h[k].anzahl THEN<br />

THEN<br />

BEGIN BEGIN BEGIN { tauschen }<br />

hilf := h[i];<br />

h[i] := h[k];<br />

h[k] := hilf;<br />

END END E END N D; { tauschen }<br />

sortiert_und_reduziert_auf := fest;<br />

IF IF I IF F fest = 26 THEN<br />

THEN<br />

FOR F FOR O R i := 1 TO T TO O 26 DO<br />

DO<br />

BEGIN<br />

BEGIN<br />

buchstaben[typ, i].tripel := haeufigkeit[i].tripel;<br />

buchstaben[typ, i].anzahl := round(haeufigkeit[i].anzahl / gesamt * 1000);<br />

END END; END<br />

END E END N D; { sortiert_und_reduziert_auf }<br />

PROCEDURE PROCEDURE histogramm (maxWert: integer);<br />

VAR VAR VVAR VAR A R i, k, proMille : integer;<br />

faktor : real;<br />

BEGIN<br />

BEGIN<br />

faktor := ((konsole.right - konsole.left) / 8 - 12) / maxWert * gesamt / 1000;<br />

FOR FOR FFOR FOR O R i := 1 TO T TO O aktuelle_Anzahl DO<br />

DO<br />

WITH WITH haeufigkeit[i] DO<br />

DO<br />

BEGIN<br />

BEGIN<br />

proMille := round(anzahl / gesamt * 1000);<br />

write(tripel, ‚:‘, proMille / 10 : 6 : 1, ‚ % ‚);<br />

FOR F FOR O R k := 1 TO TO TTO TO O round(proMille * faktor) DO<br />

DO<br />

BEGIN<br />

BEGIN<br />

write(‚•‘);<br />

END END; END END<br />

writeln;<br />

END E END N D; { WITH haeufigkeit }<br />

END E END N D; { histogramm }<br />

PROCEDURE PROCEDURE titel (ttt: STRING);<br />

BEGIN<br />

BEGIN<br />

writeln;<br />

writeln(ttt);<br />

writeln;<br />

END E END N D; { titel }<br />

39

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!