int main(){  

	unsigned int* iter;
	unsigned char mClaveExp[176]; // contendra la expansion de clave	
	unsigned char clave[16] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; //clave    
   	unsigned char arrTexto[16] = {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff}; // texto a cifrar    
	char resp;
	unsigned char texto[4][4]; // matriz 4x4 texto a cifrar
	unsigned char mClave[4][4]; //matriz 4x4 clave
	
	system("clear");
                 	
	cout << "********************************************************************************************"<< endl;
	cout << "*                                      RIJNDAEL                                    *" << endl;
	cout << "********************************************************************************************" << endl << endl;
	
	cout << "CLAVE: ";
	for (int i = 0; i < 16; i++){
		printf(" %02x ",clave[i]);
	} 
	cout << "\nTEXTO: ";
	for (int i = 0; i < 16; i++){
		printf(" %02x ",arrTexto[i]);
	}
  
	cout << "\nDESEA MODIFICAR LOS DATOS:(S/N):";
	cin >> resp;
	cin.clear(); //limpiamos buffer
	fflush(stdin);

	if(resp == 's' || resp == 'S') { 	

	cout << "CLAVE EN HEXADECIMAL: ";
	for(int i = 0; i < 16; i++){	
	
		scanf("%02x",&clave[i]);
	}
	cin.clear(); //limpiamos buffer
	fflush(stdin);
 
	cout << "TEXTO EN HEXAMECIMAL: ";
	for(int i = 0; i < 16; i++){
		scanf("%02x",&arrTexto[i]);
	}
 	cin.clear();  //limpiamos buffer
	fflush(stdin);
    	}
	
	cout << "\n\n********************************************************************************************"<< endl;
	
	for (int i = 0; i < 4; i++){
	    for (int j = 0; j < 4; j++){
            	mClave[j][i] = clave[i*4 + j]; // convierte clave a cifrar en una matriz 4X4
            }
    	}
	
	for (int i = 0; i < 4; i++){
	    for (int j = 0; j < 4; j++){
            	texto[j][i] = arrTexto[i*4 + j]; // texto a cifrar en una matriz 4X4
            }
    	}

    	Rijndael aes; 
	aes.expandirClave(mClave, mClaveExp);  //expandir la clave y guardarla en un array
    	aes.encriptar(texto, mClaveExp);  //ciframos el texto
    	cout << "\n\n\n********************************************************************************************"<< endl;
    	
    	for (int i = 0; i < 4; i++){
	    for (int j = 0; j < 4; j++){
	        printf(" %02x ",texto[j][i]); 
	    }
    	}
    	cout << "\n********************************************************************************************"<< endl;
    	cout << "\n\n\n\n";
	//iter = A.devIteraciones();
	//printf(" %02x ",iter[0]);
        
}