Hello,

If you want to use low-level AES functions to encrypt more then 16 bytes 
you
should use AES in CBC mode. You can implement this mode using AES_encrypt
()
or better use AES_cbc_encrypt().
Using  AES_encrypt() block-by-block is called ECB mode.
Look at: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

Example of using AES_cbc_encrypt() attached (pay attension of block 
padding).

Best regards,
--
Marek Marcola <marek.marc...@malkom.pl>



owner-openssl-us...@openssl.org wrote on 03/28/2012 09:01:25 AM:

> Prashanth kumar N <prashanth.kuma...@gmail.com> 
> Sent by: owner-openssl-us...@openssl.org
> 
> 03/28/2012 09:03 AM
> 
> Please respond to
> openssl-users@openssl.org
> 
> To
> 
> openssl-users@openssl.org
> 
> cc
> 
> Subject
> 
> Re: How to do encryption using AES in Openssl
> 
> 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

Attachment: aes_dec.c
Description: Binary data

Attachment: aes_enc.c
Description: Binary data

Reply via email to