Affine cipher
Encyclopedia
The affine cipher is a type of monoalphabetic substitution cipher, wherein each letter in an alphabet is mapped to its numeric equivalent, encrypted using a simple mathematical function, and converted back to a letter. The formula used means that each letter encrypts to one other letter, and back again, meaning the cipher is essentially a standard substitution cipher with a rule governing which letter goes to which. As such, it has the weaknesses of all substitution ciphers. Each letter is enciphered with the function , where is the magnitude of the shift.

Description

In the affine cipher the letters of an alphabet of size are first mapped to the integers in the range . It then uses modular arithmetic
Modular arithmetic
In mathematics, modular arithmetic is a system of arithmetic for integers, where numbers "wrap around" after they reach a certain value—the modulus....

 to transform the integer that each plaintext letter corresponds to into another integer that correspond to a ciphertext letter.
The encryption function for a single letter is
where modulus is the size of the alphabet and and are the key of the cipher. The value must be chosen such that and are coprime
Coprime
In number theory, a branch of mathematics, two integers a and b are said to be coprime or relatively prime if the only positive integer that evenly divides both of them is 1. This is the same thing as their greatest common divisor being 1...

. The decryption function is
where is the modular multiplicative inverse of modulo
Modular arithmetic
In mathematics, modular arithmetic is a system of arithmetic for integers, where numbers "wrap around" after they reach a certain value—the modulus....

 . I.e., it satisfies the equation
The multiplicative inverse of only exists if and are coprime. Hence without the restriction on decryption might not be possible.
It can be shown as follows that decryption function is the inverse of the encryption function,

Weaknesses

Since the affine cipher is still a monoalphabetic substitution cipher, it inherits the weaknesses of that class of ciphers. The Caesar cipher
Caesar cipher
In cryptography, a Caesar cipher, also known as a Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number...

 is the Affine cipher when since the encrypting function simply reduces to a linear shift.

Considering the specific case of encrypting messages in English (i.e. ), there are a total of 286 non-trivial affine ciphers, not counting the 26 trivial Caesar ciphers. This number comes from the fact there are 12 numbers that are coprime with 26 that are less than 26 (these are the possible values of ). Each value of can have 26 different addition shifts (the value); therefore, there are 12*26 or 312 possible keys. This lack of variety renders the system as highly insecure when considered in light of Kerckhoffs' Principle
Kerckhoffs' principle
In cryptography, Kerckhoffs's principle was stated by Auguste Kerckhoffs in the 19th century: A cryptosystem should be secure even if everything about the system, except the key, is public knowledge.Kerckhoffs's principle was reformulated by Claude Shannon as...

.

The cipher's primary weakness comes from the fact that if the cryptanalyst can discover (by means of frequency analysis
Frequency analysis
In cryptanalysis, frequency analysis is the study of the frequency of letters or groups of letters in a ciphertext. The method is used as an aid to breaking classical ciphers....

, brute force, guessing or otherwise) the plaintext of two ciphertext characters then the key can be obtained by solving a simultaneous equation. Since we know and are relatively prime this can be used to rapidly discard many "false" keys in an automated system.

The same type of transformation used in affine ciphers is used in linear congruential generator
Linear congruential generator
A Linear Congruential Generator represents one of the oldest and best-known pseudorandom number generator algorithms. The theory behind them is easy to understand, and they are easily implemented and fast....

s, a type of pseudorandom number generator
Pseudorandom number generator
A pseudorandom number generator , also known as a deterministic random bit generator , is an algorithm for generating a sequence of numbers that approximates the properties of random numbers...

. This generator is not a cryptographically secure pseudorandom number generator
Cryptographically secure pseudorandom number generator
A cryptographically secure pseudo-random number generator is a pseudo-random number generator with properties that make it suitable for use in cryptography.Many aspects of cryptography require random numbers, for example:...

 for the same reason that the affine cipher is not secure.

Examples

In these two examples, one encrypting and one decrypting, the alphabet is going to be the letters A through Z, and will have the corresponding values found in the following table.
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

Encrypting

In this encrypting example, the plaintext to be encrypted is "AFFINE CIPHER" using the table mentioned above for the numeric values of each letter, taking to be 5, to be 8, and to be 26 since there are 26 characters in the alphabet being used. Only the value of has a restriction since it has to be coprime with 26. The possible values that could be are 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, and 25. The value for can be arbitrary as long as does not equal 1 since this is the shift of the cipher. Thus, the encryption function for this example will be . The first step in encrypting the message is to write the numeric values of each letter.
plaintext: A F F I N E C I P H E R
x: 0 5 5 8 13 4 2 8 15 7 4 17


Now, take each value of x, and solve the first part of the equation, . After finding the value of for each character, take the remainder when dividing the result of by 26. The following table shows the first four steps of the encrypting process.
plaintext: A F F I N E C I P H E R
x: 0 5 5 8 13 4 2 8 15 7 4 17
8 33 33 48 73 28 18 48 83 43 28 93
8 7 7 22 21 2 18 22 5 17 2 15


The final step in encrypting the message is to look up each numeric value in the table for the corresponding letters. In this example, the encrypted text would be IHHWVCSWFRCP. The table below shows the completed table for encrypting a message in the Affine cipher.
plaintext: A F F I N E C I P H E R
x: 0 5 5 8 13 4 2 8 15 7 4 17
8 33 33 48 73 28 18 48 83 43 28 93
8 7 7 22 21 2 18 22 5 17 2 15
ciphertext: I H H W V C S W F R C P

Decrypting

In this decryption example, the ciphertext that will be decrypted is the ciphertext from the encryption example. The corresponding decryption function is , where is calculated to be 21, is 8, and is 26. To begin, write the numeric equivalents to each letter in the ciphertext, as shown in the table below.
ciphertext: I H H W V C S W F R C P
y: 8 7 7 22 21 2 18 22 5 17 2 15


Now, the next step is to compute , and then take the remainder when that result is divided by 26. The following table shows the results of both computations.
ciphertext: I H H W V C S W F R C P
y: 8 7 7 22 21 2 18 22 5 17 2 15
21(y-8): 0 -21 -21 294 273 -126 210 294 -63 189 -126 147
(21(y-8)) mod 26: 0 5 5 8 13 4 2 8 15 7 4 17


The final step in decrypting the ciphertext is to use the table to convert numeric values back into letters. The plaintext in this decryption is AFFINECIPHER. Below is the table with the final step completed.
ciphertext: I H H W V C S W F R C P
y: 8 7 7 22 21 2 18 22 5 17 2 15
21(y-8): 0 -21 -21 294 273 -126 210 294 -63 189 -126 147
(21(y-8)) mod 26: 0 5 5 8 13 4 2 8 15 7 4 17
plaintext: A F F I N E C I P H E R

Entire alphabet encoded

To make encrypting and decrypting quicker, the entire alphabet can be encrypted to create a one to one map between the letters of the cleartext and the ciphertext. In this example, the one to one map would be the following:
letter in the cleartext 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
number in the cleartext 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
(5x+8)mod(26) 8 13 18 23 2 7 12 17 22 1 6 11 16 21 0 5 10 15 20 25 4 9 14 19 24 3
ciphertext letter I N S X C H M R W B G L Q V A F K P U Z E J O T Y D

Programming examples

Using the Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 programming language, the following code can be used to create an encrypted alphabet using the Roman letters A through Z.
  1. Prints a transposition table for an affine cipher.
  2. a must be coprime to m=26.

def affine(a, b):
for i in range(26):
print chr(i+65) + ": " + chr(((a*i+b)%26)+65)
  1. An example call

affine(5, 8)

Or in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

:

public void Affine(int a, int b){
for (int num = 0; num < 26; num++)
System.out.println(((char)('A'+num)) + ":" + ((char)('A'+(a*num + b)% 26)) );
}
Affine(5,8)


Or in Pascal
Pascal (programming language)
Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...

:

Procedure Affine(a,b : Integer);
begin
for num := 0 to 25 do
WriteLn(Chr(i+65) , ': ' , Chr(((a*i + b) mod 26) + 65);
end;

begin
Affine(5,8)
end.

See also

  • Affine functions
  • Atbash code
    Atbash
    Atbash is a simple substitution cipher for the Hebrew alphabet. It consists in substituting aleph for tav , beth for shin , and so on, reversing the alphabet. In the Book of Jeremiah, Lev Kamai is Atbash for Kasdim , and Sheshakh is Atbash for Bavel...

  • Caesar cipher
    Caesar cipher
    In cryptography, a Caesar cipher, also known as a Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number...

  • ROT13
    ROT13
    ROT13 is a simple substitution cipher used in online forums as a means of hiding spoilers, punchlines, puzzle solutions, and offensive materials from the casual glance. ROT13 has been described as the "Usenet equivalent of a magazine printing the answer to a quiz upside down"...

  • Topics in cryptography
  • Perl interface to "Affine cipher"
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK