--- /dev/null
+function analyse2( MATRIX )\r
+%ANALYSE Summary of this function goes here\r
+% Detailed explanation goes here\r
+\r
+[m,n] = size(MATRIX);\r
+\r
+\r
+\r
+count=zeros(27,4);\r
+for k=1:4\r
+ for i=1:m\r
+ if(MATRIX(i,k)~=-1)\r
+ count(MATRIX(i,k)+1,k)=count(MATRIX(i,k)+1,k)+1;\r
+ end\r
+ end\r
+end\r
+size(count)\r
+\r
+plot(1:27,count(:,1),1:27,count(:,2),1:27,count(:,3),1:27,count(:,4));\r
+legend('Spalte1','Spalte2','Spalte3','Spalte4')\r
+\r
+end\r
+\r
--- /dev/null
+function [CODE] = ascii2num(TEXT,BASE)\r
+%ASCII2NUM Summary of this function goes here\r
+% Detailed explanation goes here\r
+phase1= cast(TEXT,'int32');\r
+\r
+\r
+phase1(phase1>=cast('a','int32'))=phase1(phase1>=cast('a','int32'))-cast('a','int32');\r
+phase1(phase1>=cast('A','int32'))=phase1(phase1>=cast('A','int32'))-cast('A','int32');\r
+\r
+phase1(phase1==32)=26;\r
+%phase1(phase1==44)=27;\r
+%phase1(phase1==46)=28;\r
+%phase1(phase1==58)=29;\r
+%phase1(phase1==59)=30;\r
+\r
+phase1(phase1>=BASE)=0;\r
+\r
+CODE=phase1;\r
+end\r
+\r
--- /dev/null
+function n = baseDecode( c, BASE )\r
+% Dekodiert eine Zahl c zu der Basis BASE\r
+% (Vektor) [0 1 0 1 1 0] zb\r
+% aus einer Aufgabe der Serie 1\r
+\r
+\r
+n = c(1);\r
+for i = 2:length(c)\r
+ n = n*BASE + c(i);\r
+end\r
+\r
+end\r
--- /dev/null
+function n = baseEncode( c , BASE)\r
+% Kodiert eine Natürlichezahl c zu der Basis b \r
+% Zahl in (Vektor) [0 1 0 1 1 0] zb\r
+% aus einer Aufgabe der Serie 1\r
+\r
+%größt möglicher Exponent\r
+exp = floor( log(c) / log(BASE));\r
+%lerer Lösungsvektor\r
+n=zeros(1,exp+1);\r
+%maximalen EXp der Basis bilden\r
+base=BASE^exp;\r
+for e = 1:exp+1\r
+ %multiplikator der aktuellen Basis\r
+ n(e)=floor(c/base);\r
+ %c verkleinern\r
+ c = c - base* n(e);\r
+ %basis um eins verringern\r
+ base=base/BASE;\r
+end\r
+\r
+end\r
--- /dev/null
+function sol = decodeLin( CODE , a ,b )\r
+%Entschlüsselt den Code mittels Linearer Verschlüsselung\r
+\r
+%Definitionen\r
+BASE = 27;\r
+FILTER = 0:26;\r
+%Inverses A\r
+ainv = find(mod([1:BASE-1]*a,BASE)==1);\r
+%Inverse Funktion\r
+f = @(x) mod((x-b)*ainv , BASE);\r
+\r
+%Konvertieren in Zahlen\r
+ascii = ascii2num(CODE,BASE);\r
+\r
+%Auf welche Soll die Funktion angwendet werden (Zusatz um symb auszulassen)\r
+wich=zeros(1,length(ascii));\r
+for i=1:length(FILTER)\r
+ wich=wich+(ascii==FILTER(i));\r
+end\r
+wich = find(wich);\r
+\r
+\r
+%Funktion anwenden\r
+ascii(wich) = f(ascii(wich));\r
+\r
+\r
+%Konvertieren in Buchstaben\r
+sol = num2ascii(ascii);\r
+end\r
+\r
--- /dev/null
+function TEXT = decodeVig(CHIFF,CODE,BASE)\r
+% Entschlüsselt den Text nach Viginére\r
+\r
+% in Zahlen umwandeln\r
+chifN=ascii2num(CHIFF,BASE);\r
+%Längen des Text und des Codes\r
+n=length(chifN);\r
+b=length(CODE);\r
+%multiplikator für den Block\r
+d=ceil(n/b)+1;\r
+\r
+%Code aufblähen auf Textlänge\r
+min=repmat(ascii2num(CODE,BASE),1,d);\r
+min=min(1:n);\r
+\r
+%Text Entschlüsseln\r
+chifC = mod(chifN-min,BASE);\r
+\r
+%Text in ASCII umwandeln\r
+TEXT=num2ascii(chifC);\r
+\r
+end\r
+\r
+\r
--- /dev/null
+function sol = encodeLin( TEXT , a ,b )\r
+%Verschlüsselt den Text mittels linearer Verschlüsselung\r
+\r
+%Definitionen\r
+BASE = 27;\r
+FILTER = 0:26;\r
+\r
+%Funktion\r
+f = @(x) mod(a*x+b , BASE);\r
+\r
+%Konvertieren in Zahlen\r
+ascii = ascii2num(TEXT,BASE);\r
+\r
+%Auf welche Soll die Funktion angwendet werden (Zusatz um symb auszulassen)\r
+wich=zeros(1,length(ascii));\r
+for i=1:length(FILTER)\r
+ wich=wich+(ascii==FILTER(i));\r
+end\r
+wich = find(wich);\r
+\r
+%Funktion anwenden\r
+ascii(wich) = f(ascii(wich));\r
+\r
+%Konvertieren in Buchstaben\r
+sol = num2ascii(ascii);\r
+end\r
+\r
--- /dev/null
+function CHIFF = encodeVig(TEXT,CODE,BASE)\r
+% Verschlüsselt den Text nach Viginére\r
+\r
+% in Zahlen umwandeln\r
+chifN=ascii2num(TEXT,BASE);\r
+%Längen des Text und des Codes\r
+n=length(chifN);\r
+b=length(CODE);\r
+%multiplikator für den Block\r
+d=ceil(n/b)+1;\r
+\r
+%Code aufblähen auf Textlänge\r
+add=repmat(ascii2num(CODE,BASE),1,d);\r
+add=add(1:n);\r
+\r
+%Text verschlüsseln\r
+chifC = mod(chifN+add,BASE);\r
+\r
+%TEXT in ASCII umwandeln\r
+CHIFF=num2ascii(chifC);\r
+\r
+end\r
+\r
--- /dev/null
+function code = genCode(len,s,n)\r
+%GENCODE Summary of this function goes here\r
+% Detailed explanation goes here\r
+code = zeros(1,len+1);\r
+\r
+code(1) = s;\r
+\r
+for i = 2:len+1\r
+\r
+ code(i) = mod (code(i-1)^2,n);\r
+\r
+end\r
+code = mod(code(2:len+1),2);\r
+end
\ No newline at end of file
--- /dev/null
+function [inv mat] = invA( a , base)\r
+%INVA Summary of this function goes here\r
+% Detailed explanation goes here\r
+\r
+loop=1;\r
+z=1;\r
+\r
+mat=[base,a,floor(base/a),0,1];\r
+\r
+\r
+\r
+while(loop==1)\r
+ z=z+1;\r
+ \r
+ mat(z,1)=mat(z-1,2);\r
+ mat(z,2)=mat(z-1,1)-mat(z-1,2)*mat(z-1,3);\r
+ mat(z,3)=floor(mat(z,1)/mat(z,2));\r
+ mat(z,4)=mat(z-1,5);\r
+ mat(z,5)=mat(z-1,4)-mat(z-1,3)*mat(z-1,5);\r
+ if(mat(z,2)==1)\r
+ loop=0;\r
+ end\r
+end\r
+\r
+%mat\r
+\r
+inv=mod(mat(z,5),base);\r
+\r
+\r
+end\r
+\r
--- /dev/null
+function [y mat] = lrexp(x,k,base,op,neut)\r
+% x^k in (base,op,neut) mit x in base und k in N\r
+\r
+\r
+y = neut;\r
+\r
+m = 1;\r
+while(m<=k)\r
+ m = m*2;\r
+end\r
+\r
+\r
+mat = [y,k,m];\r
+z = 1;\r
+\r
+while(m~=1)\r
+ m = m/2;\r
+ eval( ['y = y ',op,' y;']);y= mod(y,base);\r
+ \r
+ if(k>=m)\r
+ k=k-m;\r
+ eval( ['y = y ',op,' x;']);y= mod(y,base);\r
+ \r
+ end\r
+ \r
+ z=z+1;\r
+ mat(z,:)=[y,k,m];\r
+end\r
+\r
+mat\r
+\r
+end\r
+\r
--- /dev/null
+function [TEXT] = ascii2num(CODE)\r
+%ASCII2NUM Summary of this function goes here\r
+% Detailed explanation goes here\r
+phase1= CODE;\r
+\r
+\r
+phase1(phase1<26)=phase1(phase1<26)+cast('A','int32');\r
+\r
+phase1(phase1==26)=32;\r
+% phase1(phase1==27)=44;\r
+% phase1(phase1==28)=46;\r
+% phase1(phase1==29)=58;\r
+% phase1(phase1==30)=59;\r
+\r
+TEXT=char(phase1);\r
+end\r
+\r
--- /dev/null
+function primed = primefak(base)\r
+\r
+\r
+prime = primes(base);\r
+\r
+z=1;\r
+\r
+rest=base;\r
+\r
+primed =[];\r
+\r
+while(rest~=1)\r
+ if(mod(rest,prime(z))==0)\r
+ primed = [primed prime(z)];\r
+ rest = rest/prime(z);\r
+ else\r
+ z=z+1;\r
+ end\r
+\r
+end
\ No newline at end of file
--- /dev/null
+function [y mat] = sqmult(x,k,base,op,neut)\r
+% x^k in (base,op,neut) mit x in base und k in N\r
+\r
+\r
+y = neut;\r
+\r
+mat = [y,x,k];\r
+z = 1;\r
+\r
+while(k~=0)\r
+ if(mod(k,2)==1)\r
+ eval( ['y = y ',op,' x;']);y= mod(y,base);\r
+ \r
+ end\r
+ \r
+ eval( ['x = x ',op,' x;']);x= mod(x,base);\r
+ k = floor(k/2);\r
+ \r
+ z=z+1;\r
+ mat(z,:)=[y,x,k];\r
+end\r
+\r
+mat\r
+\r
+end\r
+\r