AES dešifrovánín a zápis do binárního souboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

AES dešifrovánín a zápis do binárního souboru – C / C++ – Fórum – Programujte.comAES dešifrovánín a zápis do binárního souboru – C / C++ – Fórum – Programujte.com

 

Mr.X
~ Anonymní uživatel
2 příspěvky
19. 3. 2014   #1
-
0
-

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;
Nahlásit jako SPAM
IP: 2001:718:2:80e:bc81:6268:...–
KIIV
~ Moderátor
+43
God of flame
19. 3. 2014   #2
-
0
-

podle me je pouziti strlen na binarni data velice osidne - je to urcene pro spocitani delky retezce tim, ze to hleda znak \0 -- a v binarce to muze byt velice caste...

Nahlásit jako SPAM
IP: 94.113.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mr.X
~ Anonymní uživatel
2 příspěvky
19. 3. 2014   #3
-
0
-

Místo strlen jsem zkoušel i sizeof ale to mi vrací celkovou velikost pole

Nahlásit jako SPAM
IP: 2001:718:2:80e:bc81:6268:...–
z
~ Anonymní uživatel
268 příspěvků
20. 3. 2014   #4
-
0
-

Délka vstupních a výstupních dat je přece stejná. +- zarovnání na násobky velikosti bloku.

Nahlásit jako SPAM
IP: 78.156.159.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 41 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý