Posts

Showing posts from July, 2026

Euler's Totient Theorem: The Secret World of Modular Exponents

Welcome back to izytech.dev ! In our previous article , we discovered how to simulate division using the Multiplicative Inverse and the Euclidean Algorithm. However, we left a huge question unanswered about modular exponentiation. We know how to calculate giant powers, but we learned a strange rule: the exponent does not live in the same modular world as the base . If the base lives in a mod N world, where does the exponent live? Today, we are going to explore this "parallel universe" and introduce the mathematical magic trick behind modern encryption: Euler's Totient Theorem . The Totient: A Parallel World To understand exponents in modular arithmetic, we must introduce a new concept called the Totient (often represented by the Greek letter Phi, Φ(N) ). The totient of a positive integer N is simply the count of positive integers that are strictly less than N and are relatively prime to N (meaning they share no common prime factors with N...

Il Teorema di Eulero: Il Mondo Segreto degli Esponenti Modulari

Bentornati su izytech.dev ! Nel precedente articolo abbiamo scoperto come simulare la divisione utilizzando l'Inverso Moltiplicativo e l'Algoritmo di Euclide. Tuttavia, abbiamo lasciato in sospeso una domanda enorme riguardo all'esponenziazione modulare. Sappiamo calcolare potenze gigantesche, ma abbiamo imparato una regola piuttosto strana: l'esponente non vive nello stesso mondo modulare della base . Se la base vive in un mondo mod N , dove vive l'esponente? Oggi esploreremo questo "universo parallelo" e introdurremo il trucco matematico dietro la crittografia moderna: il Teorema della Funzione Totiente di Eulero . La Funzione Totiente: un mondo parallelo Per comprendere il comportamento degli esponenti nell'aritmetica modulare, dobbiamo introdurre un nuovo concetto chiamato Funzione Totiente (spesso rappresentata con la lettera greca Phi, Φ(N) ). La funzione totiente di un intero positivo N è semplicemente il conteggio...

Modular Exponentiation: How "Square and Multiply" Powers Modern Cryptography

Welcome back to izytech.dev ! In the previous article , we found out how to simulate division in modular arithmetic using the Multiplicative Inverse and the ancient Euclidean Algorithm. Now that we know how to add, multiply, and "divide" numbers safely, we're facing the biggest obstacle of all: powers . In modern cryptography, encrypting and decrypting a message means taking a number (the message) and raising it to a massive power (the key) inside a modular world. But how do computers handle numbers that huge without crashing? The Problem With Giant Numbers When we're working with small numbers, exponentiation is easy. Calculating 3 to the 5th power (3 5 ) in a "modulo 143" world can even be done by hand or with a basic calculator, just by reducing the final result. But what happens if we need to calculate 12,345 raised to the 6,789th power , still modulo 143? We're talking about a number with tens of thousands of digits! Regu...

Esponenziazione Modulare: Come Gestire Numeri Giganti in Crittografia

Bentornati su izytech.dev ! Nel precedente articolo abbiamo scoperto come simulare la divisione in aritmetica modulare utilizzando l'Inverso Moltiplicativo e l'antico Algoritmo di Euclide. Ora che sappiamo sommare, moltiplicare e "dividere" i numeri in modo sicuro, ci troviamo di fronte all'ostacolo più grande di tutti: le potenze . Nella crittografia moderna, cifrare e decifrare un messaggio significa prendere un numero (il messaggio) ed elevarlo a una potenza colossale (la chiave) all'interno di un mondo modulare. Ma come fanno i computer a gestire numeri così incredibilmente grandi senza andare in crash? Il problema dei numeri giganteschi Se lavoriamo con numeri piccoli, l'esponenziazione è semplice. Calcolare 3 elevato alla 5a potenza (3 5 ) in un mondo "modulo 143" si può fare anche a mente o con una normale calcolatrice, riducendo semplicemente il risultato finale. Ma cosa succede se dobbiamo calcolare 12.345 el...

The Multiplicative Inverse and Euclid's Algorithm: How to "Divide" in Cryptography

Welcome back to izytech.dev ! In the previous article , we looked at the beating heart of cryptography: modular arithmetic. We saw how computers use the math of "remainders" to keep numbers small and calculations fast. But we ended that lesson with a big roadblock: in this circular world, division doesn't exist . So if we can't divide a number to decrypt a message, how do we go back? The answer lies in one of the most fascinating ideas in number theory: the Multiplicative Inverse , along with an algorithm that's thousands of years old and still lets us calculate it today. The Illusion of Division Think about regular math for a second. Dividing a number by 5 is exactly the same as multiplying it by 1/5 (its reciprocal). In cryptography, we use this exact same logic, but since we can't work with decimals or fractions, we need to find a whole number that behaves just like that reciprocal. This special number is called the multiplicativ...

L'Inverso Moltiplicativo e l'Algoritmo di Euclide: Come "Dividere" in Crittografia

Bentornati su izytech.dev ! Nel precedente articolo abbiamo esplorato il cuore pulsante della crittografia: l'aritmetica modulare. Abbiamo visto come i computer utilizzino la matematica dei "resti" per mantenere i numeri piccoli e i calcoli ultra-veloci. Tuttavia, avevamo concluso la lezione con un grosso ostacolo: in questo mondo circolare, la divisione non esiste . Se non possiamo dividere un numero per decifrare un messaggio, come facciamo a tornare indietro? La risposta risiede in uno dei concetti più affascinanti della teoria dei numeri: l' Inverso Moltiplicativo e un algoritmo vecchio di millenni che ci permette di calcolarlo. L'Illusione della Divisione Pensate alla matematica tradizionale. Dividere un numero per 5 è esattamente la stessa cosa che moltiplicarlo per 1/5 (il suo reciproco). In crittografia, usiamo la stessa identica logica, ma poiché non possiamo usare i numeri decimali o le frazioni, dobbiamo trovare un numero intero...

Modular Arithmetic in Cryptography: The Engine of Digital Security

Welcome back to izytech.dev ! In the previous article , we looked at why mathematical precision matters and how prime numbers and the Greatest Common Divisor are the building blocks of computer security. Today we take an important step forward and introduce the most important working tool of this field: Modular Arithmetic . If the concepts from the first lesson were the building materials, modular arithmetic is the real engine that powers modern cryptographic algorithms. Let's see how it works and why we use it every day, often without even noticing. What Is Modular Arithmetic? (The Math of the Clock) In simple terms, modular arithmetic is the math of remainders . Instead of moving along an infinite number line, we work inside a limited, cyclical system, focusing only on what is left over after a normal division by a specific number, called the modulus . A practical example we all use is reading a clock. Let's say it's 14:30 and you need to leave...

L'Aritmetica Modulare in Crittografia: Il Motore della Sicurezza Digitale

Bentornati su izytech.dev ! Nel precedente articolo abbiamo esplorato l'importanza dell'esattezza matematica e di come i numeri primi e il Massimo Comune Divisore costituiscano i mattoni fondamentali della sicurezza informatica. Oggi facciamo un passo avanti decisivo introducendo lo strumento operativo più importante di questa disciplina: l' Aritmetica Modulare . Se i concetti visti nella prima lezione rappresentano i materiali da costruzione, l'aritmetica modulare è il vero motore matematico che fa girare gli algoritmi crittografici moderni. Scopriamo insieme come funziona e perché la usiamo costantemente ogni giorno, spesso senza rendercene conto. Che cos'è l'Aritmetica Modulare? (La matematica dell'orologio) L'aritmetica modulare è, in parole semplici, la matematica dei resti . Invece di muoverci lungo una retta numerica infinita, lavoriamo all'interno di un sistema ciclico limitato, concentrandoci esclusivamente sul valore...

The Mathematical Foundations of Modern Cryptography: Exactness, Prime Numbers, and the Greatest Common Divisor

Welcome to the first post of this blog, dedicated to my academic journey in cryptography. The goal of this post is to introduce the fundamental mathematical concepts that guarantee the security of our digital communications. It is important to underline that the mathematics used in cryptography is profoundly different from what we apply in our daily routines. The absolute need for exactness In everyday life, the use of approximations is very common. For example, if a product costs $1.99, we naturally consider it as $2.00. However, in the field of modern cryptography, there is no tolerance for rounding errors. If a cryptographic algorithm approximates a value even by a microscopic fraction, the entire system fails. The digital "key" used to encrypt a message would no longer be able to decrypt it, making the information permanently inaccessible. For this reason, cryptography abandons decimal numbers and operates exclusively with integers (such as -1,...

Le fondamenta matematiche della crittografia moderna: esattezza, numeri primi e massimo comune divisore

Benvenuti alla prima pubblicazione di questo blog, dedicato al mio percorso accademico in crittografia. L'obiettivo di questo post è introdurre i concetti matematici fondamentali che garantiscono la sicurezza delle nostre comunicazioni digitali. È importante sottolineare che la matematica utilizzata in crittografia è profondamente diversa da quella che applichiamo nelle nostre routine quotidiane. L'assoluta necessità di esattezza Nella vita quotidiana, l'uso di approssimazioni è molto comune. Ad esempio, se un prodotto costa 1,99 dollari, lo consideriamo naturalmente come 2,00 dollari. Tuttavia, nel campo della crittografia moderna, non c'è tolleranza per gli errori di arrotondamento. Se un algoritmo crittografico approssima un valore anche solo di una frazione microscopica, l'intero sistema fallisce. La "chiave" digitale utilizzata per crittografare un messaggio non sarebbe più in grado di decrittografarlo, rendendo le informaz...

Iniziare con Cargo in Rust: Guida per Principianti

Iniziare con Cargo in Rust: Guida per Principianti Cargo è lo strumento di compilazione e il gestore di pacchetti predefinito per Rust. Ti aiuta a compilare il tuo codice, scaricare librerie (chiamate dipendenze ) e mantenere tutto organizzato. 1. Cos'è Cargo? Quando usi Cargo, non devi compilare il tuo codice manualmente con rustc . Cargo rende tutto più semplice, specialmente nei progetti più grandi. Puoi: Compilare il tuo codice Aggiungere librerie esterne (dipendenze) Eseguire il tuo programma Controllare la presenza di errori di compilazione 2. Controlla se Cargo è installato Se hai installato Rust usando il metodo ufficiale ( rustup ), Cargo è già installato. Per verificare, esegui questo comando nel tuo terminale: $ cargo --version Se vedi un numero di versione, sei pronto! 3. Crea un nuovo progetto Ora, creiamo un nuovo progetto Rust usando Cargo: $ cargo new hello_cargo $ cd hello_cargo Questo crea una...

Introduzione a Rust: Scrivere il tuo primo "Hello, World!"

Introduzione a Rust: Scrivere il tuo primo "Hello, World!" Introduzione a Rust: Scrivere il tuo primo "Hello, World!" Pubblicato il 20 Luglio 2025 Preparare l'area di lavoro Per prima cosa, dobbiamo stabilire una directory dove salvare il nostro codice. Anche se Rust non ha preferenze sulla posizione, è una buona pratica mantenere i propri progetti ben organizzati. Apri un terminale (o il prompt dei comandi) e crea una cartella per il tuo progetto. Per Linux, macOS e PowerShell (su Windows): # Crea una directory "projects" nella tua home mkdir ~/projects # Entra nella directory appena creata cd ~/projects # Crea la cartella per il nostro progetto specifico mkdir hello_world # Entra nella cartella del progetto cd hello_world Per il Prompt dei Comandi di Windows (CMD): > mkdir "%USERPROFILE%\projects" > cd /d "%USERPROFILE%\pro...

Come Installare Ubuntu 24.04 WSL su Windows 10 e 11

Introduzione Questa guida ti mostra passo dopo passo come installare Ubuntu 24.04 LTS utilizzando WSL (Sottosistema Windows per Linux) su Windows 10 o Windows 11. È un'ottima soluzione per eseguire Linux senza dual boot o macchine virtuali. Requisiti Windows 10 (versione 2004 o successiva) o Windows 11 Connessione a Internet Accesso come amministratore 1. Abilitare WSL Apri PowerShell come amministratore ed esegui questo comando: wsl --install Questo comando abilita le funzionalità necessarie, installa la piattaforma WSL e scarica Ubuntu (di solito l'ultima versione stabile). 2. Installare Ubuntu 24.04 Manualmente (se necessario) Se desideri installare specificamente Ubuntu 24.04 , puoi farlo manualmente: wsl --install -d Ubuntu-24.04 Oppure, se WSL è già installato: wsl --list --online wsl --install -d Ubuntu-24.04 3. Primo Avvio e Configurazione Dopo l'instal...

Capire i Trait in Rust: Molto Più Che Semplici Interfacce

Quando inizi a imparare Rust, ti imbatterai presto nei trait . Il modo migliore per capirli è non pensarli come classi, ma come qualifiche , abilità o certificazioni. Mentre una struct definisce cos'è qualcosa (i suoi dati), i trait che implementa definiscono cosa può fare (i suoi comportamenti). Questo approccio preferisce la composizione rispetto all'ereditarietà , portando a un codice più flessibile e modulare. Come Usiamo i Trait in Pratica I trait sono incredibilmente versatili. In Rust, li vedrai usati in tre modi principali: Metodi Condivisi: I trait possono definire un insieme di metodi che possono essere implementati da tipi diversi. Questo è simile al funzionamento delle interfacce in altri linguaggi. Ad esempio, un trait Summarizable potrebbe avere un metodo summarize() che sia una NewsArticle che un Tweet possono implementare. Trait Marcatori (Marker Traits)...

Come Installare Rust su Windows con WSL (Ubuntu 24.04)

Vuoi iniziare a programmare in Rust? Rust è un moderno linguaggio di programmazione, noto per essere veloce, sicuro e affidabile. Se sei un utente Windows, un ottimo modo per sviluppare con Rust è utilizzare il Sottosistema Windows per Linux (WSL). Questa guida ti mostrerà i semplici passaggi per installare Rust sul tuo computer usando WSL, in particolare con il nuovo Ubuntu 24.04. Passo 1: Prepara il tuo sistema Prima di installare Rust, dobbiamo assicurarci che il nostro ambiente Ubuntu abbia gli strumenti necessari. Rust ha bisogno di un compilatore C e di altre utilità di compilazione (build utilities). Per prima cosa, apri il tuo terminale WSL Ubuntu 24.04. Poi, esegui il seguente comando per aggiornare la lista dei pacchetti del tuo sistema: sudo apt update && sudo apt upgrade -y Successivamente, installa il pacchetto build-essential . Questo pacchetto include il compilatore GCC e altri strumenti che servono a Rust per funzionare corr...

Come Installare Solidity: Guida Completa per Principianti

Come Installare Solidity: Guida Completa per Principianti (2025) Pronto a creare smart contract sulla blockchain di Ethereum? Il primo strumento di cui hai bisogno è il compilatore Solidity , spesso chiamato solc . Questo programma trasforma il tuo codice Solidity (leggibile dall'uomo) in bytecode che la Ethereum Virtual Machine (EVM) può comprendere. Questa guida ti illustrerà i metodi più comuni ed efficaci per installarlo. Per qualsiasi progetto reale che intendi pubblicare, usa sempre l'ultima versione stabile . Il Punto di Partenza Più Semplice: Remix IDE 🚀 Se sei nuovo su Solidity o stai lavorando a piccoli contratti, il modo più semplice per iniziare è usare Remix . Remix è un potente IDE basato sul web che funziona interamente nel tuo browser. Ha il compilatore Solidity già integrato, quindi non hai bisogno di installare nulla sul tuo computer. È lo strumento perfetto per imparare,...