Here is the modified program
#include <stdio.h>
2 #include <openssl/aes.h>
3
4 static const unsigned char key[] = {
5 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
6 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
7 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
8 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
9 };
10
11 void main()
12 {
13 unsigned char text[]="test12345678abcf";
14 unsigned char out[16];
15 unsigned char decout[16];
16 int i;
17
18 AES_KEY ectx;
19 AES_KEY dectx;
20
21 AES_set_encrypt_key(key, 256, &ectx);
22 AES_encrypt(text, out, &ectx);
23
24 printf("encryp data = %s\n", out);
25
26 AES_set_encrypt_key(key, 256, &dectx);
27 AES_decrypt(out, decout, &dectx);
28 printf(" Decrypted o/p: %s \n", decout);
29
30 for (i = 0;i < 16; i++)
31 printf(" %02x", decout[i]);
32 }
33
As i read min AES block size is 128 bits which can go up to 256 bits in
multiples of 32-bits. Is this correct?
I do know encrypted data is binary but when i pass the same data to
AES_decrypt() fucntion and print using %s, i get non-readable characters. *
*What i notice is when i change the input plain text, i do see o/p vaires.
On Tue, Mar 27, 2012 at 11:24 PM, Ken Goldman <[email protected]> wrote:
> On 3/27/2012 1:33 PM, pkumarn wrote:>
>
>> I am trying to write a sample program to do AES encryption using Openssl.
>> I
>> tried going through Openssl documentation( it's a pain), could not figure
>> out much. I went through the code and found the API's using which i wrote
>> a
>> small program as below (please omit the line numbers). I don't see any
>> encryption happening... am i missing something?
>>
>
> Define "I don't see any encryption happening".
>
>
>
>> PS: I don't get any errors upon compilation.
>>
>> 1 #include<stdio.h>
>> 2 #include<openssl/aes.h>
>> 3
>> 4 static const unsigned char key[] = {
>> 5 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
>> 6 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
>> 7 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
>> 8 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
>> 9 };
>>
>
> It's strange to define a 256 bit key and use 128 bits.
>
>
> 10
>> 11 void main()
>> 12 {
>> 13 unsigned char text[]="virident";
>>
>
> The input must be equal to the AES block size.
>
>
> 14 unsigned char out[10];
>>
>
> The output must be equal to the AES block size.
>
>
> 15 unsigned char decout[10];
>>
>
> Same here.
>
>
> 16
>> 17 AES_KEY wctx;
>> 18
>> 19 AES_set_encrypt_key(key, 128,&wctx);
>> 20 AES_encrypt(text, out,&wctx);
>>
>
> This is a raw encrypt, which assumes input and output are one AES block.
>
>
> 21
>> 22 printf("encryp data = %s\n", out);
>>
>
> The encrypted data is binary, not a printable C string.
>
> 23
>> 24 AES_decrypt(out, decout,&wctx);
>>
>> 25 printf(" Decrypted o/p: %s \n", decout);
>> 26
>> 27
>> 28 }
>> Please help me to figure this out...
>>
>
>
> ______________________________**______________________________**__________
> OpenSSL Project http://www.openssl.org
> User Support Mailing List [email protected]
> Automated List Manager [email protected]
>