Festlegen eines Textes als STRING

klartext:"Das ist ein Geheimtext"$

Konvertieren des STRINGS in eine LISTE

klar1:charlist(klartext);

Funktion: CINT .. Zuordnung eine ASCII-Codes zu einem Buchstaben

klar2:makelist(cint(klar1[i]),i,1,length(klar1));

Bestimmen der Länge der Liste

length(klar2);

Um eine fixierte Spaltenzahl zu ermöglichen (z.B. 4-spaltig)
wird die Liste mit Leerzeichen auf ein Vielfaches von 4 aufgefüllt

klar3:append(klar2,makelist(32,i,1,mod(length(klar2),4)));

Die Liste wird in 4er-Teile (die zukünftigen Reihen der Matrix) zerlegt

klar4:makelist(makelist(klar3[j*4+i],i,1,4),j,0,5);

Wir erzeugen die Klartext-Matrix

A:matrix();

for i:1 thru 6 do A:addrow(A,klar4[i]);

A;

Eingabe der (nichtsingulären! - Determinante ungleich 0) Schlüsselmatrix.

K:matrix([27,31,15,91],[81,26,77,72],[32,87,55,49],[82,13,27,69]);

determinant(K);

Durch Multiplikation der Matrizen entsteht
der Geheimtext.

geheim:A.K;

Mittels Multiplikation mit der inversen
Matrix gewinnen wir wieder den Klartext.

kl:geheim.K^^(-1);

Rückumwandlung in eine Liste

kl2:[]$

for i:1 thru 6 do(
for j:1 thru 4 do (
  kl2:append(kl2,[kl[i,j]])))$

kl2;

ASCII .. Zuordnung eines Characters zu einem ASCII-Code
Umwandlung in Buchstaben.

kl3:makelist(ascii(kl2[i]),i,1,length(kl2));

Umwandlung in einen STRING

simplode(kl3);