Kryptologie - Informatik
Kryptologie - Informatik Kryptologie - Informatik
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
- Seite 1 und 2: Stichworte: Pascal-Datentypen: •
- Seite 3 und 4: Unterrichtsbeschreibung zur Kryptol
- Seite 5 und 6: Anlage 2: Das File-Konzept in THINK
- Seite 7 und 8: PROGRAM PROGRAM PROGRAM stringTests
- Seite 9 und 10: Anlage 4 : Protokoll der Projektspe
- Seite 11 und 12: 1.6 PROCEDURE PROCEDURE PROCEDURE M
- Seite 13 und 14: 2.3 Vorgehensweise bei Buchstaben:
- Seite 15 und 16: 3. Textanalyse Platz 04 Ein Program
- Seite 17 und 18: 4. Codierung mit fester ZuordnungPl
- Seite 19 und 20: 5.3 Layout alt neu Text Interaktive
- Seite 21 und 22: 6.2 Entschlüsselung: Um die Vigen
- Seite 23 und 24: Anlage 6 : Kursarbeit 1. Im nachfol
- Seite 25 und 26: Anlage 7 : Programmlauf : Bereinigt
- Seite 27 und 28: ————— Bigramme sortiert
- Seite 29 und 30: Anlage 8 : Lauffähiges Programm in
- Seite 31 und 32: PROCEDURE PROCEDURE text_ausgeben;
- Seite 33 und 34: PROCEDURE PROCEDURE sichern; VAR V
- Seite 35 und 36: PROCEDURE PROCEDURE codierung; VAR
- Seite 37: BEGIN BEGIN { analyse } FOR FOR F F
- Seite 41 und 42: FUNCTION FUNCTION uebernehmen_von (
- Seite 43 und 44: BEGIN BEGIN { Bild_zeichnen } WITH
- Seite 45 und 46: PROCEDURE PROCEDURE PROCEDURE warte
- Seite 47 und 48: BEGIN BEGIN { Interaktion } hinweis
- Seite 49 und 50: PROCEDURE PROCEDURE behandle_Klick_
- Seite 51: Anlage 9 : PGP-Algoritmus private k
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