Tool to decrypt/encrypt with Affine cipher, an encryption function with additions and multiplication that code a letter into another with value (ax + b) modulo 26.
Affine Cipher - dCode
Tag(s) : Poly-Alphabetic Cipher
dCode is free and its tools are a valuable help in games, maths, geocaching, puzzles and problems to solve every day!
A suggestion ? a feedback ? a bug ? an idea ? Write to dCode!
Encryption uses a classic alphabet, and two integers, called coefficients or keys A and B, these are the parameters of the affine function Ax+B.
Example: Encrypt DCODE with the keys A=5, B=3 and the English/latin alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ.
For each letter of the alphabet is associated to the value of its position in the alphabet (starting at 0).
Example: By default, A=0, B=1,..., Z=25, but it is possible (but not recommended) to use A=1, ..., Y=25, Z=0 using the alphabet ZABCDEFGHIJKLMNOPQRSTUVWXY.
For each letter of value $ x $ of the plain text, is associated a value $ y $, resulting of the affine function $ y = A \times x + B \mod 26 $ (with $ 26 $ the alphabet size). For each value $ y $, corresponds a letter with the same position in the alphabet, it is the ciphered letter. The Affine ciphertext is the replacement of all the letters by the new ones.
Example: DCODE is crypted SNVSX
Plain letter | $ x $ | $ y $ | Cipher letter |
D | 3 | $ 5 \times 3 + 3 = 18 $ | S |
O | 14 | $ 5 \times 14 + 3 = 73 = 21 \mod 26 $ | V |
Affine decryption requires to know the two keys A and B (the one from encryption) and the used alphabet.
Example: Decrypt the ciphered message SNVSX with keys A=5 and B=3
For each letter of the alphabet corresponds the value of its position in the alphabet.
Example: The alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ, starting at 0 gives A=0, B=1, ..., Z=25.
For each letter of value $ y $ of the message, corresponds a value $ x $, result of the inverse function $ x = A' \times (y-B) \mod 26 $ (with $ 26 $ the alphabet size)
The value $ A' $ is an integer such as $ A \times A' = 1 \mod 26 $ (with $ 26 $ the alphabet size). To find $ A' $, calculate its modular inverse.
Example: A coefficient $ A' $ for $ A = 5 $ with an alphabet size of $ 26 $ is $ 21 $ because $ 5 \times 21 = 105 \equiv 1 \mod 26 $.
For S ( $ y=18 $ ), $ x = A' \times (18-B) = 21*(18-3) \equiv 315 \mod 26 = 3 $
For each value $ x $, corresponds a letter with the same position in the alphabet: the coded letter. The plain text is the replacement of all characters with calculated new letters.
Example: For S ( $ x=3 $ ) corresponds the letter at position 3: D, etc. The original plain text is DCODE.
A message encrypted by Affine has a coincidence index close to the plain text language's one.
Any reference to an affine function (in a straight line), a graph, an abscissa or an ordinate is a clue (the function $ f (x) = ax + b $ can be represented in an orthonormal coordinate system like a classical affine function, it is therefore possible from a graph to find the slope coefficient $ a $ and the y-intercept $ b $).
The Caesar cipher is a special case of the Affine cipher where A is 1 and B is the shift/offset.
To crack Affine, it is possible to bruteforce/test all values for A and B coefficients. Use the Brute-force attack button.
If the alphabet is 26 characters long, then A coefficient has only 12 possible values, and B has 26 values, so there are only 312 test to try.
Pour an affine encryption with the function $ y = A x + B $, then the reciproqual decryption function is expressed $ y' = A' x + B $
Calculate the modular inverse of A, modulo the length of the alphabet (see below for pre-calculated values).
B' has the same value as B, for this reason, this variable should not be called B' but B.
The value of A' depends on A but also on the alphabet's length, if it is a classic one, it is 26 characters long. The values of A' are then:
A = 1 | A' = 1 |
A = 3 | A' = 9 |
A = 5 | A' = 21 |
A = 7 | A' = 15 |
A = 9 | A' = 3 |
A = 11 | A' = 19 |
A = 15 | A' = 7 |
A = 17 | A' = 23 |
A = 19 | A' = 11 |
A = 21 | A' = 5 |
A = 23 | A' = 17 |
A = 25 | A' = 25 |
The Bezout's theorem indicates that A' only exists if A and 26 (alphabet length) are coprime. This limits A values to 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 and 25 (if the alphabet is 26 characters long)
Yes, but an automatic decryption process becomes impossible, a single ciphered letter will have multiple plain letters possible.
Yes, but it exists a positive corresponding value, a value of A = -1 is equals to a value of A = 25 (because 25 = -1 mod 26).
In mathematics, an affine function is defined by addition and multiplication of the variable (often $ x $) and written $ f (x) = ax + b $. The affine cipher is similar to the $ f $ function as it uses the values $ a $ and $ b $ as a coefficient and the variable $ x $ is the letter to be encrypted.
No date nor known author.
dCode retains ownership of the online 'Affine Cipher' tool source code. Except explicit open source licence (indicated CC / Creative Commons / free), any 'Affine Cipher' algorithm, applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, translator), or any 'Affine Cipher' function (calculate, convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (Python, Java, PHP, C#, Javascript, Matlab, etc.) and no data download, script, copy-paste, or API access for 'Affine Cipher' will be for free, same for offline use on PC, tablet, iPhone or Android ! dCode is free and online.
Please, check our dCode Discord community for help requests!
NB: for encrypted messages, test our automatic cipher identifier!
Thanks to your feedback and relevant comments, dCode has developed the best 'Affine Cipher' tool, so feel free to write! Thank you!