Ahoj, dešifrování textového souboru se provede bez sebemenších problémů, ale jakmile chci dešiforvat nějakou mp3 nebo obrázek tak se mi vytvoří soubor pouze o velikosti 4 bajty. Chyba nastane při zjištování velikosti unsigned char pole, ale nevím jak tento problém vyřešit. Nevíte si s tím někdo rady?
int keylength = 256;
unsigned char* aesblock;
unsigned char aes_key[] = {
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
};
//inicializacni vektor pro dec
unsigned char iv_dec[] = {
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff
};
//open chunk file
ifstream file ("chunk1", ios::in|ios::binary|ios::ate);
int size3;
if (file.is_open())
{
size3 = file.tellg();
aesblock = new unsigned char[size3];
file.seekg (0, ios::beg);
file.read ((char*)aesblock, size3);
file.close();
}
else {
cout << "Unable to open file";
}
unsigned char dec_out[size3];
AES_KEY dec_key;
AES_set_decrypt_key(aes_key, 256, &dec_key);
AES_cbc_encrypt(aesblock, dec_out, size3, &dec_key, iv_dec, AES_DECRYPT);
/**
* Zapis do souboru
*/
FILE *fileOut2;
fileOut2 = fopen("newIndex.jpeg", "wb"); // open regular
if ( fileOut2 == NULL ) return -1; // fopen fail
int size4 = strlen((char*)dec_out);
fwrite((char*)dec_out,1,size4,fileOut2);
fclose(fileOut2);
delete[] aesblock;
return 0;