]> AND Private Git Repository - Cipher_code.git/blob - SboxAES/IOT/main.c
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
add
[Cipher_code.git] / SboxAES / IOT / main.c
1
2
3 #include<stdio.h>
4 #include<stdlib.h>
5 #include <stdint.h>
6 #include <string.h>
7 #include <sys/time.h>
8 #include"aes.h"
9 #define CTR 1
10
11
12
13
14 const int size_mesg=1024;
15
16 typedef unsigned char byte;
17
18
19
20
21
22
23 double TimeStart()
24 {
25   struct timeval tstart;
26   gettimeofday(&tstart,0);
27   return( (double) (tstart.tv_sec + tstart.tv_usec*1e-6) );
28 }
29
30 double TimeStop(double t)
31 {
32   struct timeval tend;
33
34   gettimeofday(&tend,0);
35   t = (double) (tend.tv_sec + tend.tv_usec*1e-6) - t;
36   return (t);
37 }
38
39
40
41
42 int main(int argc, char** argv) {
43
44 #ifdef AES128
45     printf("\nTesting AES128\n\n");
46 #elif defined(AES192)
47     printf("\nTesting AES192\n\n");
48 #elif defined(AES256)
49     printf("\nTesting AES256\n\n");
50 #else
51     printf("You need to specify a symbol between AES128, AES192 or AES256. Exiting");
52     return 0;
53 #endif
54
55
56     
57   byte plain[size_mesg];
58   byte cipher [size_mesg] ;
59   byte check [size_mesg] ;
60
61
62   byte mykey[16];
63   byte iv[8];
64
65   srand(12);
66
67   for(int i=0;i<16;i++) {
68     mykey[i]=lrand48();
69
70     
71   }
72   for(int i=0;i<8;i++) {
73     iv[i]=lrand48();
74
75     
76   }
77
78
79   
80   for(int i=0;i<size_mesg;i++) {
81     plain[i]=i;
82   }
83 /*  for(int i=0;i<size_mesg;i++) {
84     printf("%d ",plain[i]);
85   }
86   printf("\n\n");
87 */
88   struct AES_ctx ctx;
89
90   int nb_times=1000;
91   
92   double time=0;
93   double t=TimeStart();
94   for(int i=0;i<nb_times;i++)
95     rc4key(mykey, 8);
96   time+=TimeStop(t);
97   printf("time generate sbox %f\n",time);
98   
99     
100 //  AES_init_ctx_iv(&ctx, mykey, iv);
101   time=0;
102   t=TimeStart();
103   for(int i=0;i<nb_times;i++) {
104     My_KeyExpansion(ctx.RoundKey, mykey);
105     memcpy (ctx.Iv, iv, AES_BLOCKLEN);
106   }
107
108   time+=TimeStop(t);
109   printf("time key expansion %f\n",time);
110
111   time=0;
112   t=TimeStart();
113   for(int i=0;i<nb_times;i++)
114     My_AES_CTR_xcrypt_buffer(&ctx, plain, size_mesg);
115   time+=TimeStop(t);
116   printf("time cipher %f size %d\n",time,size_mesg);
117
118
119 /*  for(int i=0;i<size_mesg;i++) {
120     printf("%d ",plain[i]);
121   }
122 */
123   printf("\n\n");
124 //  AES_init_ctx_iv(&ctx, mykey, iv);
125   My_KeyExpansion(ctx.RoundKey, mykey);
126   memcpy (ctx.Iv, iv, AES_BLOCKLEN);
127
128   
129   My_AES_CTR_xcrypt_buffer(&ctx, plain, size_mesg);
130
131
132   /* for(int i=0;i<size_mesg;i++) {
133     printf("%d ",plain[i]);
134     }*/
135
136   printf("\n\n");
137
138
139
140
141 }