Openssl encrypt large file

Viewed 38

I'm trying to encrypt a large file using OpenSSL AES_set_encrypt_key & AES_cbc_encrypt functions. I've written a C++ program to encrypt a file using AES_set_encrypt_key & AES_cbc_encrypt. The contents is got from a large file. I'm allocating memory in heap and calling AES_cbc_encrypt. But I observed only 8 bytes are getting encrypted. But when I allocate memory on stack, the function is working properly. Any help is highly appreciated.

unsigned char enc_out[encsize]; //working unsigned char *enc_out = new unsigned char[encsize];//not working

`

QByteArray WebMessages::encryption(QString e_text) {
  QByteArray ba = e_text.toLatin1();
  char *encinput = strdup(ba.constData());
  const int UserDataSize = strlen(encinput);

  unsigned char *test2 = new unsigned char[UserDataSize];

  for (int i = 0; i < UserDataSize; i++) {
    test2[i] = encinput[i];
    // qDebug() << test2[i];
  }
  int keylength = 128;
  unsigned char aes_key[] = "";

  unsigned char iv_enc[] = "";
  unsigned char iv_dec[] = "";

  const int encsize =
      ((UserDataSize + AES_BLOCK_SIZE) / AES_BLOCK_SIZE) * AES_BLOCK_SIZE;

  qDebug() << "$$$$$$$$$$$" << UserDataSize << AES_BLOCK_SIZE << encsize
           << sizeof(unsigned char *); //1481 16 1488 8

  unsigned char enc_out[encsize];
  // unsigned char *enc_out = new unsigned char[encsize];

  AES_KEY enc_key;
  AES_set_encrypt_key(aes_key, keylength, &enc_key);
  AES_cbc_encrypt(test2, enc_out, UserDataSize, &enc_key, iv_enc,
                  AES_ENCRYPT);
  qDebug() << "enc_out" << enc_out << sizeof(enc_out);

}

`

0 Answers
Related