PMG/Kurs 11/klassische Verfahren I
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
== Der Cäsar-Verschlüsselung==
[[Bild:Verschiebe_chiffre.jpg|thumb|Hier ein Beispiel: So wird aus '''Eisbecher''' durch Substitution '''LPZILJOLY''' (bei Schlüssel 7).Ein weiteres Beispiel ist das Wort '''QUELLE'''. Bei diesem entsteht mit Schlüssel 4 das Wort '''UYIPPI'''.]]
''Codierung:''
Mit '''einem''' Geheimalphabet werden die Buchstaben/Zeichen der Nachricht durch andere Buchstaben, Buchstaben- oder Wortgruppen ersetzt.
''Caesar-Methode:'' Durch verschieben des Alphabets um eine gewisse Anzahl an stellen, entsteht ein verschlüsselter Text.
Das Geheimnis dahinter ist der Schlüssel.
''Sicherheit:''
Die Sicherheit ist relativ gering, da leicht über Häufigkeitsanalysen der Code geknackt werden kann. So kommen Vokale am häufgsten vor. Denn meist wird auch nur ein Buchstabe für einen anderen ersetzt. Sicherer ist es einen Buchstaben des Klartextes mit einer Buchstabengruppe zu verschlüsseln. Noch sicherer sind polyalphabetische Substitutionsmechanismen.
<br>
*Teste das Programm mit verschiedenen Eingaben.
<popup label="Quelltext">
<code id="4f0f4c30aaeaf">
var k:String; v:Integer;
function caesar_test(klar:string; v:integer):string;
var a,i,ascii:integer; wort:String;
begin
a:=length(klar);
wort:='';
for i:=1 to a do
begin
ascii:=(klar[i]); //ord noch nicht bekannt, einfach weglassen, dann wandelt er automatisch um
if (ascii<91) and (ascii>64)
then begin ascii:=ascii+v;
if ascii>90 then ascii:=ascii-26;
wort:=wort+chr(ascii);
end
else wort:=wort+' ';
end;
result:=wort;
end;
</code>
</popup>
<run id="4f0f4c30ab0cb">
k:= inputDialog('Klartext (in Großbuchstaben)');
v:= StrToInt(inputDialog('Verschiebezahl'));
writeln (caesar_test(k,v));
</run>
== Rückwärtsschrift ==
Gegeben ist eine Funktion, die einen eingegebenen Text rückwärts ausgibt.
<popup label="Quelltext">
<code id="4f0f4b55f29fd">
function rueck(klar:string):string;
var wort:string;
i:integer;
begin
wort:='';
for i:=length(klar) downto 1 do
wort:=wort+klar[i];
result:=wort;
end;
</code>
</popup>
<br> Teste den Quelltext für ein paar Beispiele. <br>
<run id="4f0f4c30aaf4e">writeln(rueck('testen'));</run>
== Vokale ersetzen ==
Analog zu "Drei Chinesen mit dem Kontrabass" werden ''die Vokale'' eines Textes durch den eingegebenen Buchstaben ersetzt. <br>
<popup label="Quelltext">
<code id="4f0f4b55f2a66">
function vokale(klar,v:string):string;
var wort:string;
i:integer;
begin
wort:='';
for i:=1 to length(klar) do
case klar[i] of
'a','A','e','E','i','I','o','O','u','U': wort:=wort+v;
else
wort:=wort+klar[i];
end;
result:=wort;
end;
</code>
</popup>
<run id="4f0f4c30aafd8">writeln(vokale('Probiertext eingeben','o'));</run>
== Zickzackschrift ==
Eine etwas kompliziertere Variante der Verschlüsselung ist die Zickzackschrift. <br>
Die Buchstaben werden nicht durch andere Zeichen oder Symbole ersetzt, sondern einfach neu gemischt. Dieses Prinzip nennt man auch "Anagramm".
Zerlege den Text in zwei gleich lange Zeilen und lies dann im Zickzack: <br>
''Beispiel:''<br>
n t e i t n i b i e w r e s c t a w r e u z t n e d e e m r ä m n i h b r e d n
wird zu <br>
n t e i t n i b i e w r e s c t a w r e
u z t n e d e e m r ä m n i h b r e d n
im Zickzack gelesen: nutzetintendiebeimerwärmensichtbarwerden <br>
<popup label="Quelltext">
<code id="4f0f4c30aae2c"">
function zickzack(klar:string;):string;
var l,i,n:integer; wort:string;
begin
wort:='';
l:=length(klar);
if l mod 2 = 0 then n:=l div 2
else n:=l div 2 +1;
for i:=1 to n do wort:=wort+klar[i]+klar[n+i];
result:=wort;
end;
</code>
</popup>
<run id="4f0f4c30ab04a">writeln(zickzack('Testergebnis'));</run>