Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % MADE BY
- % Linus Nilsson, Erik Lindqvist
- % den 20 maj 2017
- % Civilingej?r i datas?kerhet | BTH
- clear all
- close all
- clc
- %Projekt C: Hillkryptosystemet Uppgift(a)
- %?vers?ttning av bokst?ver till siffror enligt Tabell.1
- %a=0;b=1;c=2;d=3;e=4;f=5;g=6;h=7;i=8;j=9;k=10;l=11;m=12;n=13;o=14;p=15;q=16;r=17;s=18;t=19;u=20;v=21;x=22;y=23;z=24;?=25;?=26;?=27;
- xlabel(['Time (' char(120) 's)']);
- xlabel(['Time (' char(121) 's)']);
- xlabel(['Time (' char(122) 's)']);
- xlabel(['Time (' char(229) 's)']);
- xlabel(['Time (' char(228) 's)']);
- xlabel(['Time (' char(249) 's)']);
- %klartext: marockosm?lvaktkrockarmedh?rnan
- %4x4 ?vers?ttning;
- %maro -> x0=(12, 0, 17, 14);
- %ckos -> x1=(2, 10, 14, 18);
- %m?lv -> x2=(12, 25, 11, 21);
- %aktk -> x3=(0, 10, 19, 10);
- %rock -> x4=(17, 14, 2, 10);
- %arme -> x5=(0, 17, 12, 4);
- %dh?r -> x6=(3, 7, 27, 17);
- %nan? -> x7=(13, 0, 13, 0);
- %Skapar en matris med varje fyra indelning som rader
- A = [12 2 12 0 17 0 3 13;0 10 25 10 14 17 7 0;17 14 11 19 2 12 27 13;14 18 21 10 10 4 17 0];
- %key=[-1 1 3 3; 0 1 -2 3; -1 2 0 3; 8 -9 7 1]
- % TODO: encryp
- %msg = 'marockosmålvaktkrockarmedhörnan';
- keyA=[-1 1 3 3; 0 1 -2 3; -1 2 0 3; 8 -9 7 1];
- moduo=28;
- Y=zeros(0);
- %multiplitiplicerar varje rad med nyckeln och delar med 28 som rest och för sedan ut varje ny rad och lägger på 65 för att få bokstaven de symboliserar.
- m=4;
- for i=1:8
- for j =1:4
- ytmp=A(i:j)*keyA;
- ytmp=mod(ytmp, moduo);
- Y=[Y ytmp];
- disp(Y);
- end
- end
- Y=Y(4:end);
- %Fixar problemet med w,å,ä,ö
- if char(Y)==22
- char(Y)=120;
- elseif char(Y)==23
- char(Y)=121;
- elseif char(Y)==24
- char(Y)=122;
- elseif char(Y)==25
- char(Y)=229;
- elseif char(Y)==26
- char(Y)=228;
- elseif char(Y)==27
- char(Y)=246;
- end
- Ymsg=char(Y+65);
- %Projekt C: Hillkryptosystemet Uppgift(b)
- % TODO: decrypt
- %invers funktion
- %decrykt key = [5 10 1; 0 1 2; 1 6 8];
- %kryptogram = 'iåaovcåänzcjisgpykågdzkontfkbfdaingzvåå';
- keyB=[5 10 1; 0 1 2; 1 6 8];
- %Inverterar nyckeln med den givna funktionen
- determinant = det(keyB);
- adj = determinant*inv(keyB);
- [d, a, b] = gcd(determinant ,28);
- detInv = mod(a,28);
- invKeyB = mod(detInv*adj, 28);
- %kryptogram i 3x3
- %iåa -> z0=(8, 25, 0);
- %ovc -> z1=(14, 21, 2);
- %åän -> z2=(25, 26, 13);
- %zcj -> z3=(24, 2, 9);
- %isg -> z4=(8, 18, 6);
- %pyk -> z5=(15, 23, 10);
- %8gd -> z6=(25, 6, 3);
- %zko -> z7=(24, 10, 14);
- %ntf -> z8=(13, 19, 5);
- %kbf -> z9=(10, 1, 5);
- %dai -> z10=(3, 0, 8);
- %ngz -> z11=(13, 6, 14);
- %v88 -> z12=(21, 25, 25);
- B = [8 14 25 24 8 15 25 24 13 10 3 13 21; 25 21 26 2 18 10 6 14 19 1 0 6 25; 0 2 13 9 6 10 3 16 5 5 8 14 25];
- Q=zeros(0);
- %Multiplicerar varje rad men inversen av nyckeln och delar med 28 som rest och för sedan ut varje ny rad och lägger på 65 för att få bokstaven de symboliserar.
- n=3;
- for i=1:12
- qtmp=B((i:1)*n+1:i*n)*inv*KeyB;
- qtmp=mod(qtmp, moduo);
- Q=[Q qtmp];
- end
- Q=Q(4:end);
- %Fixar problemet med w,?,?,?
- if char(Q)==22
- char(Q)=120;
- elseif char(Q)==23
- char(Q)=121;
- elseif char(Q)==24
- char(Q)=122;
- elseif char(Q)==25
- char(Q)=229;
- elseif char(Q)==26
- char(Q)=228;
- elseif char(Q)==27
- char(Q)=246;
- end
- Qmsg=char(Q+65);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement