How to decrypt ciphertext using openssl in C?
Question: How do I able to decrypt a cipher text which is encrypted using AES in python.

Encrypt.py

Using this I made cipher text using AES and concatenated that with the IV and
wrote that in to a file file.txt.

    
    
    from Crypto.Cipher import AES
    import hashlib, os
    Plain = 'This is a string'             #String to Encrypt
    key = 'mysecretpassword'      
    #key = hashlib.md5(key).digest()       #Key
    IV = 'InitializationVector'
    IV = hashlib.md5(IV).digest()          #Initialization Vector
    print len(IV)
    Obj1 = AES.new(key, AES.MODE_CBC, IV)
    Cipher = Obj1.encrypt(Plain)           #Cipher text
    File = open('file.txt','w')
    File.write(Cipher+IV)      #Concatenated the string and IV and
                               #wrote that to a file file.txt 
    File.close()
    

Decrypt.c

Using this now I got the Cipher text and IV from file.txt. Now how do I able
to decrypt the Cipher using openssl or any other libraries?

    
    
    #include <stdio.h>
    #include <string.h>
    int main ()
    {
      char filename[] = "file.txt";
      FILE *file = fopen ( filename, "r" );
      char key[] = "mysecretpassword";
      if (file != NULL) {
        char line [1000];
        char *p = line;
        char *array = line;
        while(fgets(line,sizeof line,file)!= NULL) {
          fprintf(stdout,"%s\n",line);
          char otherString[strlen(line)-15];
          strncpy(otherString, p, strlen(line)-16);
          otherString[strlen(otherString)-1] = '\0';
          printf("%s\n", otherString);//Here I got the Encrypted string
          array=array+(strlen(array)-16);
          printf("%s\n",array);//Here I got the IV
          //Here how to decrypt the Cipher text using "IV" and "key"
        }
        fclose(file);
      }
      else {
        perror(filename);
      }
      return 0;
    }
    

Really I am a newbie. Please forgive for the errors in my question and please
feel free to help me, that would be your most kindness. Thanks a lot in
advance.


Answer: 
    #include "openssl/aes.h"
    
      char buffer[1000];
      AES_KEY dec_key;
      AES_set_decrypt_key(key, 128, &dec_key);
      AES_cbc_encrypt(otherString, buffer, strlen(line) - 16, 
                         &dec_key,  array, AES_DECRYPT);
    //AES_KEY dec_key;
    //AES_set_decrypt_key(key, keySize, &dec_key);
    //AES_cbc_encrypt(ciphertext, result, textLen, &dec_key, iv, AES_DECRYPT);
    

This works for me. 128 is bits for 16-byte key.

But i believe, you also have bug somewhere in -1 -15 -16 string length. This
part of while loop can be changed to fix the problem:

    
    
      int strLen = strlen(line) - 16;
    
      char otherString[strLen + 1];
      strncpy(otherString, p, strLen);
      otherString[strLen] = '\0';
    
      array = array + strLen;
    

Here is also nice AES CBC encryption/decryption [example code](http://misc-
file.googlecode.com/svn/vm/aes_cbc_encrypt.cpp) and [your working
code](http://pastebin.com/WAuEUecC).

