Thanks for the examples. :-)
You wrote:
> In CBC mode, your encrypted data can be bigger for one block (for padding).
But how will I know how big the Buffer
A) must be before encryption
B) and will be filled after encryption?

Example: I want to encrypt 133 Bytes. So I need 9*16 Byte plus maybe one for 
padding. I give AES_cbc_encrypt a 160 Byte Buffer. But after encryption I dont 
know if 144 Bytes are used or 160 Bytes. Is there a formula? 


#include <stdio.h>
#include <string.h>
#include <openssl/aes.h>
#include <cmath>
#include <cstdlib>

unsigned char key32[] = 
{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};

void OpenSSLEncAes(
                        const unsigned char *ToEncrypt, 
                        const unsigned int InLength, 
                        unsigned char **Encrypted, 
                        unsigned int *OutLength) {
        AES_KEY aeskey;
        unsigned int BufferLen;
        unsigned char iv[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

        // How big must be the buffer? My solution:
        // Round up to fill the last 16 Byte block AND add one additional block 
for padding:
        BufferLen = (unsigned int)(16*ceil(1+InLength/16.0)); // 16 = AES block 
size

        
        AES_set_encrypt_key(key32, 32*8, &aeskey);
        *Encrypted = new unsigned char[BufferLen];
        AES_cbc_encrypt(ToEncrypt, *Encrypted, BufferLen, &aeskey, iv, 
AES_ENCRYPT);
        fwrite(*Encrypted, 1, 16, stdout);
}

int main() {
        unsigned char *Encrypted=0;
        unsigned int OutLen=0;
        unsigned char *ToEncrypt=(unsigned char *)"marek";

        OpenSSLEncAes(ToEncrypt, strlen((char *)ToEncrypt), &Encrypted, 
&OutLen);
        return 0;
}

-- 
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten 
Browser-Versionen downloaden: http://www.gmx.net/de/go/browser
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to