/******************************** README FILE *******************************/

Prima di poter eseguire il programma di analisi crittografica mediante 
logica booleana, devono essere creati dei files da cui estrarre i dati.
A tal fine devono prima essere creati e lanciati i seguenti eseguibili:
1) des: per la sua creazione compilare e linkare i seguenti files C++:
        des_1.c (.cpp), des.c (.cpp), leg_Sbox.c (cpp), esa_bin.c 
        (.cpp), permuta.c (.cpp), leggi_pd.c (.cpp), leggi_pi.c (.cpp).
        Tale programma legge i files in cui sono contenuti la chiave 
        (key_des) ed i blocchi del plaintext (plaintxt) e genera il file che 
        contiene i blocchi del ciphertext (ciph_txt). Nel caso in cui la 
        chiave fosse sconosciuta, i files dovrebbero essere forniti come 
        files di testo.
	Per maggiori dettagli circa le opzioni con cui lanciare des, 
	digitare sulla linea di comando des -h seguito da invio. 
2) matrici: per la sua creazione compilare e linkare i seguenti files C++:
            matrici.c (.cpp). In tal modo e' possibile creare tutte le 
            matrici su cui l'algoritmo DES si basa.
3) Le S_boxes sono state semplificate con il programma CAD Espresso (il
   programma che fornisce i files in formato adatto e' creafile ottenuto 
   compilando e linkando creafil2.c con leg_Sbox.c).
   I files restituiti da Espresso, sono convertiti in un formato leggibile 
   dal programma principale tramite il programma trasform (generato 
   compilando il files trasform.c (.cpp)).
4) main: per la sua creazione compilare e linkare: S_boxes.c, minimiz.c, 
         leggi_pp.c, propagID.c, leggi_E.c, ins_01.c, leggi_P.c, leggi_pd.c,
         leggi_pi.c, esa_bin.c, permuta.c, leggi_sp.c, formule.c, iterades.c,
         chiave.c, scrivifo.c, leggi_sh.c, main.c, scrivi.c, modif_id.c,
         valuprop.c, verifica.c, confron.c, sistema.c, scrivicl.c.
	 Per maggiori dettagli circa le opzioni con cui lanciare main, 
 	 digitare sulla linea di comando main -h seguito da invio. 

N.B.: Il file verifica viene inserito solo per verificare il corretto 
      funzionamento in test di prova in cui la chiave e' nota.
      Il modulo key_bin.c e' stato sviluppato per ottenere la chiave in
      formato binario. Tale formato e' utilizzato per il controllo di cio' 
      che la ricerca locale ottiene come risultato.

/***************************************************************************/

/***************************** Descrizione files ***************************/

  FILE   |                       CONTENUTO
----------------------------------------------------------------------------
chiave   : chiave espressa in binario
ciph_txt : blocchi del ciphertext
clausole : circuito finale semplificato in formato a clausole
dimacs   : circuito finale semplificato in formato dimacs
E_matr   : matrice E
key_des  : chiave
Mats1    
....
Mats8    : S-box in formato comprensibile da Espresso. Ciascun file 
           rappresenta una S-box
Mats11   
Mats12
....    
Mats84   : S-box in formato comprensibile da Espresso. Per ogni output di 
           ciascuna S-box e' stato costruito un file 
m11Exact
m12Exact
....
m84Exact : output di Espresso
P_matr   : matrice P
IP_matr  : matrice IP
IP-1_matr: matrice IP inversa
plaintxt : blocchi di plaintext
PC-1_matr: matrice PC-1
S1
....
S8       : matrici rappresentanti le S-box 
S11
S12
....
S84      : trasformazione dei file output di Espresso in un formato ad hoc
           per il programma main
PC-2_matr: matrice PC-2
shift    : vettore degli shift
sistema  : circuito finale semplificato in formato leggibile

/*****************************************************************************/
