I not too sure about using the same context for both decryption and encryption. It says in the man pages that *
EVP**_**CIPHER**_**CTX**_**cleanup()* clears all information from a cipher context and free up any allocated memory associated with it. So, I think you should probably use different contexts, one for decrypting and another for encrypting. But I am not too sure, if your code does not work, then you probably should try it this way, because everything else looks ok. Regards, Vijay K. On Sat, Jun 28, 2008 at 5:01 PM, Razack <[EMAIL PROTECTED]> wrote: > I'm not sure, that this code is correct? > > > > thx for help > > > > code: > > #include <stdio.h> > > #include <openssl/evp.h> > > > > int main(int argc, char *argv[]) > > { > > unsigned char text[]="Hello World!"; > > char key[]="password"; > > char iv[]="12345678"; > > > > unsigned char outbuf[1024]; > > int outlen, tmplen, i; > > > > EVP_CIPHER_CTX ctx; > > EVP_CIPHER_CTX_init(&ctx); > > > > EVP_EncryptInit_ex(&ctx,EVP_aes_256_cbc(),NULL,key,iv); > > EVP_EncryptUpdate(&ctx,outbuf,&outlen,text,strlen(text)); > > EVP_EncryptFinal_ex(&ctx,outbuf+outlen,&tmplen); > > outlen+=tmplen; > > EVP_CIPHER_CTX_cleanup(&ctx); > > > > printf("%s\n",outbuf); > > > > EVP_DecryptInit_ex(&ctx,EVP_aes_256_cbc(),NULL,key,iv); > > EVP_DecryptUpdate(&ctx,outbuf,&outlen,text,strlen(text)); > > EVP_DecryptFinal_ex(&ctx,outbuf+outlen,&tmplen); > > outlen+=tmplen; > > EVP_CIPHER_CTX_cleanup(&ctx); > > > > printf("%s\n",text); > > } >