Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
didattica:triennale:so:ay_1819:progettosettembre [2019/08/08 18:39]
michele [Descrizione]
didattica:triennale:so:ay_1819:progettosettembre [2020/09/17 16:55] (current)
Line 7: Line 7:
 Con SHA (Secure Hash Algorithm) si indica una famiglia di funzioni crittografiche di hash sviluppate a partire dal 1993 dalla National Security Agency (NSA). Gli algoritmi della famiglia sono denominati **SHA-1**, **SHA-224**,​ **SHA-256**,​ **SHA-384** e **SHA-512**:​ le ultime 4 varianti sono spesso indicate genericamente come SHA-2, per distinguerle dal primo. Il primo produce un digest del messaggio di soli 160 bit, mentre gli altri producono digest di lunghezza in bit pari al numero indicato nella loro sigla (ad esempio SHA-256 produce un digest di 256 bit). Nelle //GNU Core Utilities// sono disponibili i programmi (da shell) ''​sha1sum'',​ ''​sha224sum'',​ ''​sha256sum'',​ ''​sha384sum''​ e ''​sha512sum''​ che consentono di calcolare (e verificare) il //digest// associato ad un file. Una descrizione (con pseudocodice) degli algoritmi SHA sono disponibili ai seguenti link: [[https://​it.wikipedia.org/​wiki/​Secure_Hash_Algorithm#​Pseudocodice_di_SHA-1|link1]],​ [[https://​it.wikipedia.org/​wiki/​Secure_Hash_Algorithm#​Pseudocodice_di_SHA-256_(una_variante_di_SHA-2)|link2]]. Con SHA (Secure Hash Algorithm) si indica una famiglia di funzioni crittografiche di hash sviluppate a partire dal 1993 dalla National Security Agency (NSA). Gli algoritmi della famiglia sono denominati **SHA-1**, **SHA-224**,​ **SHA-256**,​ **SHA-384** e **SHA-512**:​ le ultime 4 varianti sono spesso indicate genericamente come SHA-2, per distinguerle dal primo. Il primo produce un digest del messaggio di soli 160 bit, mentre gli altri producono digest di lunghezza in bit pari al numero indicato nella loro sigla (ad esempio SHA-256 produce un digest di 256 bit). Nelle //GNU Core Utilities// sono disponibili i programmi (da shell) ''​sha1sum'',​ ''​sha224sum'',​ ''​sha256sum'',​ ''​sha384sum''​ e ''​sha512sum''​ che consentono di calcolare (e verificare) il //digest// associato ad un file. Una descrizione (con pseudocodice) degli algoritmi SHA sono disponibili ai seguenti link: [[https://​it.wikipedia.org/​wiki/​Secure_Hash_Algorithm#​Pseudocodice_di_SHA-1|link1]],​ [[https://​it.wikipedia.org/​wiki/​Secure_Hash_Algorithm#​Pseudocodice_di_SHA-256_(una_variante_di_SHA-2)|link2]].
  
-<wrap em>**Non è possibile usare librerie C che computino i valori sha.**</​wrap>​+<wrap em>**Non è possibile usare librerie C (o richiamare applicazioni) ​che computino i valori sha**</​wrap>​
 ==== Descrizione ==== ==== Descrizione ====
 Nel progetto occorre sviluppare l'​applicazione ''​shadb''​ che consente di archiviare i valori dei //digest// associati ai diversi file in un file apposito allo scopo di verificare se un dato file è già presente o meno nel proprio archivio. Le informazioni raccolte dal programma vengono salvate all'​interno di un file la cui struttura è la seguente: Nel progetto occorre sviluppare l'​applicazione ''​shadb''​ che consente di archiviare i valori dei //digest// associati ai diversi file in un file apposito allo scopo di verificare se un dato file è già presente o meno nel proprio archivio. Le informazioni raccolte dal programma vengono salvate all'​interno di un file la cui struttura è la seguente:
Line 41: Line 41:
  
 E' importante osservare che il parametro ''<​pathtoafile>''​ può essere un path relativo, mentre quello salvato nel repository deve essere un path **assoluto**. E' importante osservare che il parametro ''<​pathtoafile>''​ può essere un path relativo, mentre quello salvato nel repository deve essere un path **assoluto**.
 +
 +== Esempio ==
 +
 +Consideriamo ad esempio il file ''​lorem.txt''​ accessibile con path assoluto ''/​home/​utente/​lorem.txt''​ il cui contenuto è il seguente:
 +
 +<​code>​
 +Lorem ipsum dolor sit amet, consectetur adipisci elit, sed do eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullamco laboriosam, nisi ut aliquid ex ea commodi consequatur. Duis aute irure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
 +</​code>​
 +
 +Supponiamo che che venga invocato da shell il programma ''​shadb''​ all'​interno della directory ''/​home/​utente/''​ con i seguenti parametri:
 +
 +<​code>​
 +shadb add SHA1 ./​lorem.txt ​
 +</​code>​
 +
 +Ne file ''​sahdb.out''​ (che assumiamo non aver indicizzato nessun file con analogo contenuto) verrà aggiunta la seguente porzione di dati:
 +
 +<​code>​
 +/​home/​utente/​loretm.txt\r\n
 +SHA1\r\n
 +e30e23b314c61b150ff5202d5aa30f87911893d1\r\n
 +</​code> ​
  
 === Ricerca === === Ricerca ===
Line 53: Line 75:
   - Viene stampato sullo standard output il file assoluto del file con il medesimo hash calcolato (se esiste);   - Viene stampato sullo standard output il file assoluto del file con il medesimo hash calcolato (se esiste);
   - Se tale file non esiste, viene stampato sullo standard error un messaggio di errore.   - Se tale file non esiste, viene stampato sullo standard error un messaggio di errore.
- 
 ====== Addendum per 12 CFU ====== ====== Addendum per 12 CFU ======