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

Private GIT Repository
update of cmac
[Cipher_code.git] / Arduino / sketch_AES_cbc / sketch_AES_cbc.ino
1 #include <AES.h>
2 //#include "./printf.h"
3
4 AES aes ;
5
6 byte *key = (unsigned char*)"0123456789010123";
7 const int size_mesg=256;
8
9
10
11
12
13
14 //real iv = iv x2 ex: 01234567 = 0123456701234567
15 unsigned long long int my_iv = 36753562;
16
17
18   
19
20
21
22
23
24
25
26
27 void setup ()
28 {
29   Serial.begin (57600) ;
30  // printf_begin();
31   delay(500);
32   printf("\n===testng mode\n") ;
33   
34   randomSeed(134);
35
36
37   
38
39   
40 //  otfly_test () ;
41 //  otfly_test256 () ;
42 }
43
44 void loop () 
45 {
46   prekey_test () ;
47   delay(2000);
48 }
49
50 void prekey (int bits)
51 {
52   aes.iv_inc();
53   byte iv [N_BLOCK] ;
54
55
56   byte plain[size_mesg];
57   byte cipher [size_mesg] ;
58   byte check [size_mesg] ;
59
60   randomSeed(334);
61   for(int i=0;i<size_mesg;i++) {
62     plain[i]=random(255);
63   }
64   
65  
66
67   aes.set_IV(my_iv);
68   aes.get_IV(iv); 
69   
70   unsigned long ms = micros ();
71
72
73   aes.do_aes_encrypt(plain,size_mesg,cipher,key,bits,iv);
74   Serial.print("Encryption took: ");
75   Serial.println(micros() - ms);
76
77   aes.set_IV(my_iv);
78   aes.get_IV(iv);
79   
80   
81   ms = micros ();
82   aes.do_aes_decrypt(cipher,size_mesg,check,key,bits,iv);
83   Serial.print("Decryption took: ");
84   Serial.println(micros() - ms);
85 /*  printf("\n\nPLAIN :");
86   aes.printArray(plain,(bool)true);
87   printf("\nCIPHER:");
88   aes.printArray(cipher,(bool)false);
89   printf("\nCHECK :");
90   aes.printArray(check,(bool)true);
91   printf("\nIV    :");
92   aes.printArray(iv,16);
93   printf("\n============================================================\n");
94
95   */
96   bool equal=true;
97     for(int i=0;i<size_mesg-1;i++) {
98       
99       if(check[i]!=plain[i]) {
100         printf("%d %d %d\n",plain[i],check[i],i);
101         equal=false;
102       }
103     }
104   //printf("CHECK %d\n",equal);
105   
106 }
107
108 void prekey_test ()
109 {
110   prekey (128) ;
111 }
112