%
% Chiffrieren eines Textes mit einer linearen Blockchiffre
% der Länge 2 über F_29.
%

function[T]=decrypt(C,a,b,c,d)

Tabelle='ABCDEFGHIJKLMNOPQRSTUWVXYZ., ';

T=[];

if isempty(C)==1
    disp('Kein Text vorhanden.');
    return;
end

D=mod(a*d-b*c,29);
if D==0
    disp('Die Eingabe liefert keine Blockchiffre.');
    return;
end

LT=length(C);

if mod(LT,2)==1
    disp('Kein korrekt verschlüsselter Text.');
    return;
end

SC=[];

for k=1:1:LT
    idx=find(Tabelle==C(k));
    if isempty(idx)==1
        disp('Falsches Textformat.');
        return;
    end
    SC=[SC;idx-1];
end

[dummy,u,v]=gcd(29,D);
De=mod(v*[d -b;-c a],29);

ST=[];

for k=1:2:LT-1
    ST=[ST;mod(De*SC(k:k+1),29)];
end

T=[];

for k=1:1:LT
    T=[T Tabelle(ST(k)+1)];
end

disp(['Dechiffrierter Text: ' T]);

return;