UTILS.
100% nel browser
✖️

Cifrario Affine — Codificatore / Decodificatore

Cifrario monoalfabetico che usa E(x)=(a·x+b) mod 26, con validazione della chiave (gcd(a,26)=1) e decodifica con inverso modulare. Codifica o decodifica lettere all'istante.

La chiave a deve essere coprima con 26: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 o 25.

— l'output appare qui —

Informazioni su questo strumento

Il Cifrario Affine — Codificatore / Decodificatore è uno strumento gratuito, che funziona nel browser, per il cifrario monoalfabetico costruito sull'aritmetica modulare. Le lettere A–Z sono numerate da 0 a 25 e ciascuna viene trasformata dalla funzione lineare E(x) = (a·x + b) mod 26, dove a e b sono i due valori della chiave. La decodifica inverte con D(y) = a⁻¹·(y − b) mod 26, dove a⁻¹ è l'inverso moltiplicativo modulare di a modulo 26.

Affinché il cifrario sia reversibile, il moltiplicatore a deve essere coprimo con 26 — cioè gcd(a, 26) = 1. Le dodici scelte valide sono 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 e 25; qualsiasi altro valore mapperebbe due lettere diverse sullo stesso output e non può essere decodificato, quindi lo strumento lo rifiuta con un messaggio chiaro. La chiave additiva b può essere un valore qualsiasi da 0 a 25. Tutto viene calcolato localmente nel tuo browser, quindi nulla di ciò che digiti lascia il tuo dispositivo.

Il caso viene preservato e i caratteri non alfabetici passano inalterati. Il cifrario Affine generalizza cifrari classici più semplici: impostando a = 1 si riduce a uno scorrimento di Cesare di b, e a = 25, b = 25 riproduce il cifrario Atbash. È un classico dei corsi di matematica discreta e teoria dei numeri perché rende concreti i concetti di coprimalità e inversi modulari, e compare regolarmente negli enigmi CTF e in strumenti come CyberChef.

Domande frequenti

Qual è la formula del cifrario affine?
La codifica è E(x) = (a·x + b) mod 26 e la decodifica è D(y) = a⁻¹·(y − b) mod 26, con le lettere numerate da 0 a 25. Qui a⁻¹ è l'inverso moltiplicativo modulare di a modulo 26.
Quali valori di a sono ammessi?
Solo valori coprimi con 26, cioè gcd(a, 26) = 1: ovvero 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 o 25. Altri valori rendono il cifrario non invertibile, quindi lo strumento li rifiuta.
Come avviene la decodifica?
Serve l'inverso modulare a⁻¹ di a modulo 26, il numero per cui a·a⁻¹ ≡ 1 (mod 26). Lo strumento lo trova automaticamente, poi applica D(y) = a⁻¹·(y − b) mod 26 a ogni lettera.
Come si collega a Cesare e Atbash?
Li generalizza entrambi. Con a = 1 il cifrario affine diventa uno scorrimento di Cesare di b, e con a = 25, b = 25 riproduce il cifrario Atbash. È la forma lineare di una sostituzione monoalfabetica.

Altri strumenti