Could someone help me. I don't know why i get a stack corruption . Here is my program:
#include<iostream>
#include <fstream>
#include<conio.h>
#include <string>
#include "aes.h"
using namespace std;
int main(int argc, char **argv)
{
unsigned char key32[32];
unsigned char iv[16];
unsigned char* inbuf=new unsigned char[128];
unsigned char** intext=new unsigned char*[16];
unsigned char outbuf[128];
//memset(inbuf, 0, sizeof(inbuf));
cout<<"enter text:";
cin>>inbuf;
int lenght=strlen(reinterpret_cast<char*>(inbuf));
ifstream keyfile("file.key");
if(keyfile.is_open())
{
keyfile>>key32;
cout<<key32<<endl;
}
cout<<key32<<endl;
ifstream ivfile("file.iv");
if(ivfile.is_open())
{
ivfile>>iv;
cout<<iv<<endl;
}
ofstream criptfile("file.out");
memset(outbuf, 0, sizeof(outbuf));
AES_KEY aeskey;
AES_set_encrypt_key(key32, 32*8, &aeskey);
int n=lenght/16;
cout<<lenght<<endl;
cout<<n<<endl;
int rest=lenght%16;
if(rest!=0) n++;
for (int i = 0; i < n; i++)
intext[i]=new unsigned char[n];
for(int e=0;e<n;e++)
for(int d=0;d<16;d++)
intext[e][d]=0;
int l=0;
int m=0;
for(int j=0;j<lenght;j++)
{
intext[l][m]=inbuf[j];
m++;
if(m==16)
{
l++;
m=0;
}
}
for(int k=0;k<n;k++)
{
AES_cbc_encrypt(intext[k], outbuf, 16, &aeskey, iv, AES_ENCRYPT);
if(criptfile.is_open())
{
criptfile<<outbuf;
cout<<outbuf;
}
}
keyfile.close();
ivfile.close();
criptfile.close();
//getch();
}
The error that i get is: stack around the variable 'iv' was corrupted.