I am experimenting with AES encryption in C++ and I found an implementation of AES on GitHub, the problem is that the input byte array's size should be divisible by 16 and my data will not fullfill this requirement in the majority of time. I want to add padding (0-s to the end of the array) until the size is divisible by 16.
I have a function which calculates the nearest size but I don't know how to add padding to the array.
PBYTE AddPadding(PBYTE Array, int size)
{
if (size % 16 != 0)
{
size += (16 - size % 16);
size = ceil(size / 16) * 16;
}
BYTE* tmp = new BYTE[size];
//the magic should happen here
return tmp;
}
The inputs and the calling are:
BYTE in[] = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10, 0x25 };
PBYTE tmp = AddPadding(in, sizeof(in));