Advertisement
Guest User

Untitled

a guest
May 28th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. % MADE BY
  2. % Linus Nilsson, Erik Lindqvist
  3. % den 20 maj 2017
  4. % Civilingej?r i datas?kerhet | BTH
  5.  
  6. clear all
  7. close all
  8. clc
  9.  
  10. %Projekt C: Hillkryptosystemet Uppgift(a)
  11. %?vers?ttning av bokst?ver till siffror enligt Tabell.1
  12. %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;
  13. xlabel(['Time (' char(120) 's)']);
  14. xlabel(['Time (' char(121) 's)']);
  15. xlabel(['Time (' char(122) 's)']);
  16. xlabel(['Time (' char(229) 's)']);
  17. xlabel(['Time (' char(228) 's)']);
  18. xlabel(['Time (' char(249) 's)']);
  19.  
  20. %klartext: marockosm?lvaktkrockarmedh?rnan
  21. %4x4 ?vers?ttning;
  22. %maro -> x0=(12, 0, 17, 14);
  23. %ckos -> x1=(2, 10, 14, 18);
  24. %m?lv -> x2=(12, 25, 11, 21);
  25. %aktk -> x3=(0, 10, 19, 10);
  26. %rock -> x4=(17, 14, 2, 10);
  27. %arme -> x5=(0, 17, 12, 4);
  28. %dh?r -> x6=(3, 7, 27, 17);
  29. %nan? -> x7=(13, 0, 13, 0);
  30.  
  31. %Skapar en matris med varje fyra indelning som rader
  32. 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];
  33. %key=[-1 1 3 3; 0 1 -2 3; -1 2 0 3; 8 -9 7 1]
  34.  
  35. % TODO: encryp
  36. %msg = 'marockosmålvaktkrockarmedhörnan';
  37. keyA=[-1 1 3 3; 0 1 -2 3; -1 2 0 3; 8 -9 7 1];
  38. moduo=28;
  39. Y=zeros(0);
  40.  
  41. %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.
  42. m=4;
  43. for i=1:8
  44. for j =1:4
  45. ytmp=A(i:j)*keyA;
  46. ytmp=mod(ytmp, moduo);
  47. Y=[Y ytmp];
  48. disp(Y);
  49. end
  50. end
  51. Y=Y(4:end);
  52. %Fixar problemet med w,å,ä,ö
  53. if char(Y)==22
  54. char(Y)=120;
  55. elseif char(Y)==23
  56. char(Y)=121;
  57. elseif char(Y)==24
  58. char(Y)=122;
  59. elseif char(Y)==25
  60. char(Y)=229;
  61. elseif char(Y)==26
  62. char(Y)=228;
  63. elseif char(Y)==27
  64. char(Y)=246;
  65. end
  66. Ymsg=char(Y+65);
  67.  
  68. %Projekt C: Hillkryptosystemet Uppgift(b)
  69. % TODO: decrypt
  70. %invers funktion
  71. %decrykt key = [5 10 1; 0 1 2; 1 6 8];
  72. %kryptogram = 'iåaovcåänzcjisgpykågdzkontfkbfdaingzvåå';
  73.  
  74. keyB=[5 10 1; 0 1 2; 1 6 8];
  75. %Inverterar nyckeln med den givna funktionen
  76. determinant = det(keyB);
  77. adj = determinant*inv(keyB);
  78. [d, a, b] = gcd(determinant ,28);
  79. detInv = mod(a,28);
  80. invKeyB = mod(detInv*adj, 28);
  81.  
  82. %kryptogram i 3x3
  83. %iåa -> z0=(8, 25, 0);
  84. %ovc -> z1=(14, 21, 2);
  85. %åän -> z2=(25, 26, 13);
  86. %zcj -> z3=(24, 2, 9);
  87. %isg -> z4=(8, 18, 6);
  88. %pyk -> z5=(15, 23, 10);
  89. %8gd -> z6=(25, 6, 3);
  90. %zko -> z7=(24, 10, 14);
  91. %ntf -> z8=(13, 19, 5);
  92. %kbf -> z9=(10, 1, 5);
  93. %dai -> z10=(3, 0, 8);
  94. %ngz -> z11=(13, 6, 14);
  95. %v88 -> z12=(21, 25, 25);
  96.  
  97. 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];
  98.  
  99. Q=zeros(0);
  100. %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.
  101. n=3;
  102. for i=1:12
  103. qtmp=B((i:1)*n+1:i*n)*inv*KeyB;
  104. qtmp=mod(qtmp, moduo);
  105. Q=[Q qtmp];
  106. end
  107. Q=Q(4:end);
  108. %Fixar problemet med w,?,?,?
  109. if char(Q)==22
  110. char(Q)=120;
  111. elseif char(Q)==23
  112. char(Q)=121;
  113. elseif char(Q)==24
  114. char(Q)=122;
  115. elseif char(Q)==25
  116. char(Q)=229;
  117. elseif char(Q)==26
  118. char(Q)=228;
  119. elseif char(Q)==27
  120. char(Q)=246;
  121. end
  122. Qmsg=char(Q+65);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement