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 <kgold...@us.ibm.com> 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                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
>

Reply via email to