]> AND Private Git Repository - Cipher_code.git/blob - Arduino/sketch_AES/sketch_AES.ino
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Merge branch 'master' of ssh://info.iut-bm.univ-fcomte.fr/Cipher_code
[Cipher_code.git] / Arduino / sketch_AES / sketch_AES.ino
1 #include <AES.h>
2
3 #include<AES-128_V10.h>
4 //#include "./printf.h"
5
6 AES aes ;
7
8 byte *key = (unsigned char*)"0123456789010123";
9 const int size_mesg=16*15;
10
11
12
13
14
15
16 //real iv = iv x2 ex: 01234567 = 0123456701234567
17 unsigned long long int my_iv = 36753562;
18
19
20   
21
22
23 unsigned char NwkSkey[16] = {
24   0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
25   0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
26 };
27
28 unsigned char AppSkey[16] = {
29   0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
30   0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
31 };
32
33
34
35 void setup ()
36 {
37   Serial.begin (57600) ;
38 //  printf_begin();
39   delay(500);
40 //  printf("\n===testng mode\n") ;
41   
42   randomSeed(134);
43
44
45   
46
47   
48 //  otfly_test () ;
49 //  otfly_test256 () ;
50 }
51
52 void loop () 
53 {
54   prekey_test () ;
55   delay(2000);
56 }
57
58 void prekey (int bits)
59 {
60   aes.iv_inc();
61   byte iv [N_BLOCK] ;
62
63
64   byte plain[size_mesg];
65   byte cipher [size_mesg] ;
66   byte check [size_mesg] ;
67
68   randomSeed(334);
69   for(int i=0;i<size_mesg;i++) {
70     plain[i]=random(255);
71   }
72   
73  
74
75  
76   
77   unsigned long ms = micros ();
78   aes.set_IV(my_iv);
79   aes.get_IV(iv);
80
81   aes.do_aes_encrypt(plain,size_mesg,cipher,key,bits,iv);
82   Serial.print("Encryption took: ");
83   Serial.println(micros() - ms);
84   ms = micros ();
85   aes.set_IV(my_iv);
86   aes.get_IV(iv);
87   aes.do_aes_decrypt(cipher,size_mesg,check,key,bits,iv);
88   Serial.print("Decryption took: ");
89   Serial.println(micros() - ms);
90 /*  printf("\n\nPLAIN :");
91   aes.printArray(plain,(bool)true);
92   printf("\nCIPHER:");
93   aes.printArray(cipher,(bool)false);
94   printf("\nCHECK :");
95   aes.printArray(check,(bool)true);
96   printf("\nIV    :");
97   aes.printArray(iv,16);
98   printf("\n============================================================\n");
99
100   */
101   bool equal=true;
102     for(int i=0;i<size_mesg-1;i++) {
103       
104       if(check[i]!=plain[i]) {
105         printf("%d %d %d\n",plain[i],check[i],i);
106         equal=false;
107       }
108     }
109   Serial.print("CHECK ");
110   Serial.println(equal);
111
112   for(int i=0;i<16;i++) {
113     Serial.print(plain[i]);
114     Serial.print(" ");
115   }
116   Serial.println(); 
117
118   ms = micros ();
119   AES_Encrypt(plain,AppSkey);
120   int time=micros() - ms;
121   Serial.print("new enc took: ");
122   Serial.println(time);
123
124   for(int i=0;i<16;i++) {
125     Serial.print(plain[i]);
126     Serial.print(" ");
127   }
128   Serial.println(); 
129  
130
131    
132 }
133
134 void prekey_test ()
135 {
136   prekey (128) ;
137 }
138