Tool to decrypt/encrypt Vigenere automatically. Vigenere cipher is a poly-alphabetic substitution system that use a key and a double-entry table.

Vigenere 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*!

The Vigenère cipher is a polyalphabetic encryption algorithm invented by the French cryptologist Blaise de Vigenère in the 16th century. It is based on a shift cipher to which is added the use of a keyword that changes the shift at each step.

Encryption with Vigenere uses a key made of letters (and an alphabet). There are several ways to achieve the ciphering manually:

**Vigenere Ciphering by adding letters**

In order to cipher a text, take the first letter of the message and the first letter of the key, add their value (letters have a value depending on their rank in the alphabet, starting with 0). The result of the addition modulo 26 (26=the number of letter in the alphabet) gives the rank of the ciphered letter.

__Example:__ To crypt `DCODE`, the key is `KEY` and the alphabet is `ABCDEFGHIJKLMNOPQRSTUVWXYZ`.

__Example:__ Take the first letters of the plaintext `D` (value = 3) and of the key `K` (value = 10) and add them (3+10=13), the letter with value 13 is `N`.

Continue with the next letter of the plaintext, and the next letter of the key. When arrived at the end of the key, go back to the first letter of the key.

__Example:__ `DCODEKEYKE`

__Example:__ `NGMNI` is the ciphertext.

**Vigenere Cipher using a table**

In order to encrypt using Vigenere method, the easiest way is to have a double entry grid, here is one (when the alphabet is `ABCDEFGHIJKLMNOPQRSTUVWXYZ`):

__Example:__ The key is `KEY`, and the plaintext is `DCODE`.

Locate the first letter of the plaintext message in the first row of the table and the first letter of the key on the left column. The cipher letter is at the intersection.

__Example:__ Locate the letter `D` on the first row, and the letter `K` on the first column, the ciphered letter is the intersection cell `N`.

Continue with the next letter of the plaintext, and the next letter of the key. When arrived at the end of the key, go back to the first letter of the key.

__Example:__ `NGMNI` is the ciphertext.

Vigenere decryption requires a key (and an alphabet). As for encryption, two ways are possible.

**Decryption of Vigenere by subtracting letters**

__Example:__ To decrypt `NGMNI`, the key is `KEY` and the alphabet is `ABCDEFGHIJKLMNOPQRSTUVWXYZ`.

To decrypt, take the first letter of the ciphertext and the first letter of the key, and subtract their value (letters have a value equal to their position in the alphabet starting from 0). If the result is negative, add 26 (26=the number of letters in the alphabet), the result gives the rank of the plain letter.

__Example:__ Take the first letters of the ciphertext `N` (value = 13) and the key `K` (value = 10) and subtract them (13-10=3), the letter of value 3 is `D`.

Continue with the next letters of the message and the next letters of the key, when arrived at the end of the key, go back the the first key of the key.

__Example:__ `NGMNIKEYKE`

__Example:__ `DCODE` is the plain text.

**Decryption of Vigenere with a table**

To decrypt Vigenere with a double entry square table, use the following grid (case alphabet is `ABCDEFGHIJKLMNOPQRSTUVWXYZ`):

__Example:__ To decrypt `NGMNI`, the key is `KEY`.

Locates the first letter of the key in the left column, and locates on the row the first letter of the ciphered message. Then go up in the column to read the first letter, it is the corresponding plain letter.

__Example:__ Locate the letter `K` on the first column, and on the row of it, find the cell of the letter `N`, the name of its column is `D`, it is the first letter of the plain message.

Continue with the next letters of the message and the next letters of the key, when arrived at the end of the key, go back the the first key of the key.

__Example:__ The original plain text is `DCODE`.

Following a Vigenere encryption, the message has a coincidence index which decreases between 0.05 and 0.04 depending on the length of the key, it decreases towards 0.04 the longer the key is.

Most common keyless techniques use statistical methods in order to find the key length, then a simple frequency analysis allows to find the key.

**Kasiski test**

Kasiski test consists in finding repeating sequences of letters in the ciphertext.

__Example:__ `ABC` appears three times in the message `ABCXYZABCKLMNOPQRSABC`

The fact that repeating letters can be found means two things: either a same sequence of letter of the plaintext is crypted with the same part of the key, either different sequences letters are crypted with different parts of the key but they ends with the same crypted letters. This second possibility is poorly probable.

By analyzing the gaps between two identical redundant sequences, an attacker can find multiples of the key length. By analyzing each gaps in term of number of letters, and by calculating divisors, an attacker can deduct with a high probability the size of the key.

__Example:__ Positions of `ABC` are 0, 6 et 18, gaps are 6, 12 and 18 letters length, their most common divisors are 2, 3 and 6, so the key has a high probability to be 2, 3 or 6 letters long.

**Index of coincidence test**

The test using the index of coincidence consists in taking one letter out of n in the ciphertext and calculate the IC. The higher it is, the higher the probability n is the key size.

Indeed, taking one letter every n where n is the key-length, ends with a sequence of letters that are always crypted using the same shift. The index of coincidence is then equals to the one of the plain text.

When encrypting, the key is added to the plain text to get encrypted text. So, from the encrypted text, subtract the plain text to get the key.

NB: This is equivalent to decrypting the encrypted text with the plain text as key. The key will then appear repeated.

__Example:__ The cipher text is `NGMNI` and the corresponding plaintext is `DCODE`. Use `DCODE` as key to decrypt `NGMNI` and find as plaintext `KEYKE` which is in fact the key `KEY` (repeated).

Multiple variants exists, as Beaufort Cipher, Vigenere Autoclave, Vernam Cipher

In order to make Vigenere resistant to attacks, the coder must determine the most secure encryption key possible. All attacks are based on detections of key repetitions, so to avoid this pitfall, it is necessary to use a key as long as possible so that it does not repeat, or even longer than the size of the text to encrypt. This is the case of the Vernam cipher.

The variant by running key uses a key length at least equal to that of the text. This technique makes it possible to secure Vigénère's cipher as Kasiski's attack is no longer valid.

To get a long enough key, it is common to use a long book or other message. The use of this kind of key then opens the possibility of other attacks, by probable word and / or by analysis of the frequencies of the characters if the message is long enough.

In the particular case where the entire key is made up of random characters (see Vernam one time pad), then the message becomes completely unbreakable by any method of cryptanalysis (unconditional security).

By using a disordered alphabet, or with a key that modifies the traditional Latin alphabet, then the majority of the tools of cryptanalysis become useless and the Vigenère cipher is then resistant to classical attacks.

Saint-Cyr slide is a rule-shaped instrument, a tool that simplifies manual encryption and decryption of a message encrypted with Vigenere. Its fixed part consists of the alphabet, and its sliding mobile part is a double alphabet.

To encrypt a letter, move the slider so that the `A` of the fixed part matches the letter of the key. Then look at the letter of the mobile part directly below the letter of the plain message written on the fixed part.

Blaise de Vigenère (1523-1596) was a French diplomat.

Caesar cipher is in fact a Vigenere cipher with a 1-letter long key. Vigenere code uses longer keys that allows the letters to be crypted in multiple ways. The frequency analysis is no more enough to break a code.

Blaise de Vigenère wrote a treatise describing this cipher in 1586. A full reedition is available here (link) However another treatise from 1553 by Giovan Battista Bellaso already described a very similar system.

dCode retains ownership of the "Vigenere Cipher" source code. Except explicit open source licence (indicated Creative Commons / free), the "Vigenere Cipher" algorithm, the applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, breaker, translator), or the "Vigenere Cipher" functions (calculate, convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (Python, Java, PHP, C#, Javascript, Matlab, etc.) and all data download, script, or API access for "Vigenere Cipher" are not public, same for offline use on PC, mobile, tablet, iPhone or Android app!

Reminder : dCode is free to use.

The copy-paste of the page "Vigenere Cipher" or any of its results, is allowed (even for commercial purposes) as long as you cite dCode!

Exporting results as a .csv or .txt file is free by clicking on the *export* icon

Cite as source (bibliography):

*Vigenere Cipher* on dCode.fr [online website], retrieved on 2023-05-31,

- Vigenere Decoder
- Vigenere Encoder
- What is the Vigenere cipher? (Definition)
- How to encrypt using Vigenere cipher?
- How to decrypt Vigenere cipher?
- How to recognize Vigenere ciphertext?
- How to decipher Vigenere without knowing the key?
- How to find the key when having both cipher and plaintext?
- What are the variants of the Vigenere cipher?
- How to choose the encryption key?
- What is the running key vigenere cipher?
- What is the keyed vigenere cipher?
- What is a Saint-Cyr slide?
- Why the name Vigenere?
- What are the advantages of the Vigenere cipher versus Caesar Cipher?
- When Vigenere was invented?

vigenere,table,kasiski,square,grid,cipher,key,probable,frequency,blaise,cyr,saint,repeat

https://www.dcode.fr/vigenere-cipher

© 2023 dCode — The ultimate 'toolkit' to solve every games / riddles / geocaching / CTF.

Feedback