# Affiene cijfer

Het affiene cijfer is een voorbeeld van een monoalfabetische substitutieversleuteling. Onder deze encryptiemethode valt het bekendere Caesarcijfer, hoewel deze methode minder gevoelig is voor 'brute force' decodering.

## Algemene formule

| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
De algemene formule om een tekst te kunnen versleutelen met het affiene cijfer luidt als volgt:
    $E(x)=(ax+b){\pmod {n}}$
Waarin:
* n het aantal letters is dat het alfabet heeft
* x het overeenkomende getal is van de nog niet versleutelde letter (als bijvoorbeeld de E moet worden vercijferd, wordt x = 4)
* a en b de sleutels zijn en bepalen hoe een letter zal worden vercijferd
N.B.: Het is van belang dat de grootste gemene deler van (a,n) = 1. Anders kunnen bepaalde letters op een andere manier worden vercijferd en gaat een code verloren.
De formule van het decoderen van zo'n vercijferde tekst luidt zo:
    $D(x)=a^{-1}(x-b){\pmod {n}}$

## Voorbeeld

De tekst "Dit is een code" zal worden verstuurd, vercijferd met de volgende formule:
$E(x)=(5x+4){\pmod {26}}$
Eerst wordt elke letter genoteerd als het bijbehorende getal:
| Tekst | D | I | T | I | S | E | E | N | C | O | D | E |
| Bijbehorende x | 3 | 8 | 19 | 8 | 18 | 4 | 4 | 13 | 2 | 14 | 3 | 4 |
Dan wordt de x-waarde van elke letter in de formule ingevuld:
| Tekst | D | I | T | I | S | E | E | N | C | O | D | E |
| x | 3 | 8 | 19 | 8 | 18 | 4 | 4 | 13 | 2 | 14 | 3 | 4 |
| (5x+4) | 19 | 44 | 99 | 44 | 94 | 24 | 24 | 69 | 14 | 74 | 19 | 24 |
| (5x+4) (mod 26) | 19 | 18 | 21 | 18 | 16 | 24 | 24 | 17 | 14 | 22 | 19 | 24 |
Waarna de letters die met de uitkomsten overeenkomen worden opgezocht:
| Tekst | D | I | T | I | S | E | E | N | C | O | D | E |
| x | 3 | 8 | 19 | 8 | 18 | 4 | 4 | 13 | 2 | 14 | 3 | 4 |
| (5x+4) | 19 | 44 | 99 | 44 | 94 | 24 | 24 | 69 | 14 | 74 | 19 | 24 |
| (5x+4) (mod 26) | 19 | 18 | 21 | 18 | 16 | 24 | 24 | 17 | 14 | 22 | 19 | 24 |
| Vercijferde tekst | T | S | V | S | Q | Y | Y | R | O | W | T | Y |
Het ontcijferen van de tekst kan met de formule:
$D(x)=5^{-1}(x-4){\pmod {26}}$
Omdat (5^-1) (mod 26) = 21, kan deze formule worden omgeschreven tot:
$D(x)=21(x-4){\pmod {26}}$
Het ontcijferen gaat dan als volgt:
Van de ontvangen tekst wordt eerst elke letter als het bijbehorende getal opgeschreven:
| Vercijferde Tekst | T | S | V | S | Q | Y | Y | R | O | W | T | Y |
| bijbehorende x | 19 | 18 | 21 | 18 | 16 | 24 | 24 | 17 | 14 | 22 | 19 | 14 |
Daarna worden de x-waarden van elke letter in de formule ingevuld:
| Vercijferde Tekst | T | S | V | S | Q | Y | Y | R | O | W | T | Y |
| bijbehorende x | 19 | 18 | 21 | 18 | 16 | 24 | 24 | 17 | 14 | 22 | 19 | 24 |
| 21(x-4) | 315 | 294 | 357 | 294 | 252 | 420 | 420 | 273 | 210 | 378 | 315 | 420 |
| 21(x-4) (mod 26) | 3 | 8 | 19 | 8 | 18 | 4 | 4 | 13 | 2 | 14 | 3 | 4 |
Vervolgens worden de overeenkomende letters genoteerd:
| Vercijferde Tekst | T | S | V | S | Q | Y | Y | R | O | W | T | Y |
| bijbehorende x | 19 | 18 | 21 | 18 | 16 | 24 | 24 | 17 | 14 | 22 | 19 | 24 |
| 21(x-4) | 315 | 294 | 357 | 294 | 252 | 420 | 420 | 273 | 210 | 378 | 315 | 420 |
| 21(x-4) (mod 26) | 3 | 8 | 19 | 8 | 18 | 4 | 4 | 13 | 2 | 14 | 3 | 4 |
| Tekst | D | I | T | I | S | E | E | N | C | O | D | E |
Het bericht blijkt inderdaad "Dit is een code" te zijn.

## De zwakheden van de affiene cijfer

Omdat a en n relatief priem moeten zijn, zijn er maar 12 mogelijke getallen voor a (omdat alle even getallen en 13 met 26 een grootste gemene deler anders dan 1 hebben). Voor b zijn er 26 mogelijkheden. In totaal zijn er dus 12 x 26 = 312 mogelijke manieren om een tekst met affiene cijfer te kunnen vercijferen.
Doordat 312 mogelijkheden niet hoog is, is deze vercijfering methode gevoelig voor 'brute force'. Ook is er het probleem dat de tekst kan worden gekraakt door simpele frequentieanalyse.