Post

Visualizzazione dei post da aprile, 2021

Crittografia e Hashing

Immagine
Introduzione Esamineremo in questa nota i concetti principali di crittografia e hashing, a cosa servono, come vengono usati e le best practice in ambito di sicurezza dei dati. Occorre innanzitutto distinguere due tipi di funzioni che possono essere applicate ai dati: la cifratura e l'hashing. Entrambi trasformano un testo "in chiaro" in un testo completamente diverso, ma con differenze sostanziali: la cifratura produce una serie di caratteri che può essere, mediante la decifratura, ritrasformata nel testo iniziale, mentre l'hashing non è una funzione invertibile. La dimensione di un file criptato è in generale molto simile alla dimensione del file originale, mentre l'hashing occupa molto meno spazio (a meno che il file originale non sia di pochi caratteri). La cifratura serve a trasmettere un file in modo che sia leggibile solo a chi sappia come decifrarlo . Durante la seconda guerra mondiale la decifratura di messaggi ha consentito di intercettare...

Refactoring: improving abstraction

Immagine
 Astrazione L'astrazione consente di semplificare le entità attraverso la riduzione dei dettagli non rilevanti e la generalizzazione, operata individuandone le caratteristiche principali. L'astrazione è cruciale nel problem solving per poter decomporre un sistema reale in componenti e stabilire le loro connessioni in modo da poterlo gestire più efficacemente. I principi che dovrebbero guidare la progettazione e l'individuazione delle varie entità per comporre un modello di un sistema sono: Identificare  e definire il contorno di un "oggetto" Gli oggetti del dominio applicativo dovrebbero avere corrispondenza nel suo modello logico o concettuale. E' molto più facile parlare di oggetti che  hanno una corrispondenza nel mondo reale che di oggetti completamente astratti, pensiamo al caso in cui si voglia validare il modello con il cliente, o anche solo parlarne con un collega. Ogni componente  del modello dovrebbe essere un oggetto "completo" di tutte le...

Numeri primi e funzione Z di Riemann

Immagine
Introduzione In questa nota raccoglierò alcune formule e teoremi inerenti i numeri primi e la funzione Z, al solo fine di avere un punto di raccolta online sul tema, per coloro (presumo pochi) che fossero, come me, appassionati dell'argomento. Non esporrò tutte le dimostrazioni, ma eventualmente darò i riferimenti su dove trovarle ove si fosse interessati ad esse. In fondo all'articolo c'è una bibliografia con tutto il materiale per approfondire. La presente nota sarà integrata nel tempo, ossia non è (e forse non lo sarà mai) "finita". Nomenclatura \(\pi(n)\) = quanti numeri primi ci sono tra 1 e \(n\). Teorema dei numeri primi Questo teorema è talmente importante che ha una sua sigla propria, ossia TNP. Afferma che $$\pi(x) \sim \frac{x}{\log x} \qquad [1]$$ ossia che tra 1 ed \(n\) ci sono circa \(n/\log n\) numeri primi. Statisticamente la probabilità che un numero compreso tra 1 ed \(n\) sia primo è \(1/\log n\). Alternativamente, l'\(n\...