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) : Substitution 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!
Affine encryption is the name given to a substitution cipher whose correspondence is given by an affine function endowed with 2 coefficients A and B.
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 \times (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).
No date nor known author for affine cipher.