title: Encrypt using OpenSSL API in C
body: <p>Its not duplicate since I was not asking how to encrypt, but I was asking whats wrong in my encryption. Dont like this Question you are free to delete it. I dont care.</p>
  
  <p>I am trying to encrypt one simple hello text file.</p>
  
  <p>Here is my code to encrypt the data.</p>
  
  <pre><code>int encrypt(EVP_CIPHER_CTX *ctx, FILE *ifp,FILE *ofp)
  {
          int bytes_read, bytes_written, enc_bytes,tlen;
          unsigned char indata[AES_BLOCK_SIZE];
          unsigned char encdata[AES_BLOCK_SIZE];
          unsigned char outdata[AES_BLOCK_SIZE];
          while (1) {
              bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifp);
  
              if (EVP_EncryptUpdate (ctx, encdata, &amp;enc_bytes, indata, bytes_read) != 1)
              {   
                      printf ("error in encrypt update\n");
                      return -1; 
              }   
              printf ("INPUT\n");
              print_memory(indata, bytes_read);
              if (EVP_EncryptFinal (ctx, encdata + enc_bytes, &amp;tlen) != 1)
              {   
                      printf ("error in encrypt final\n");
                      return -1; 
              }   
  
              printf ("OUTPUT\n");
              print_memory(encdata,enc_bytes+tlen);
              bytes_written = fwrite(encdata, 1,enc_bytes + tlen, ofp);
              if (bytes_read &lt; AES_BLOCK_SIZE)
                      break;
      }   
  </code></pre>
  
  <p>Here is key and ivec, I have used for initialization</p>
  
  <pre><code>unsigned char ckey[] =  {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF};
  unsigned char ivec[] = {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF};
  
  
  EVP_CIPHER_CTX ctx;
  EVP_CIPHER_CTX_init (&amp;ctx);
  EVP_EncryptInit (&amp;ctx, EVP_bf_cbc (), ckey, ivec);
  </code></pre>
  
  <p>Here is the output encrypted data in hex 24 47 50 58 93 0B 04 9C D5 54 65 93 D1 6B AD 5A</p>
  
  <p>but when i try to decode the data using openSSL cmd
  I get following error</p>
  
  <pre><code>anshul:~/&gt; openssl aes-128-cbc  -d  -in  otext  -K 000102030405060708090A0B0C0D0E0F -iv 000102030405060708090A0B0C0D0E0F -nosalt
  bad decrypt
  3075450556:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:529:
  </code></pre>
  
  <p>This is the same error I get if I use wrong ivec or key.
  So I do have wild guess that there is something different in c program key or ivec and openssl cmd key or ivek</p>