A codificação com a cifra de Vigenère é um criptossistema simétrico, ou seja, utilizar a mesma chave para codificar e decodificar. A codificação com a cifra de Vigenère assemelha-se muito à codificação César, exceto que a primeira usa uma chave mais longa para neutralizar o principal problema da codificação César, isto é, o fato de uma letra só poder ser codificada de uma maneira. Para resolver esse problema, utiliza-se uma palavra chave ao invés de um simples caractere. Em primeiro lugar, cada letra é associada a um número correspondente:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | V | W | X | Y | Z | |
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 | 26 |
Isto consiste em codificar um texto com uma palavra acrescentando, a cada uma das suas letras, a letra de uma outra palavra, chamada palavra-chave. A palavra-chave é acrescentada indefinidamente no texto a ser codificado e, depois, o código ASCII de cada uma das letras da palavra-chave é adicionado ao texto a ser criptografado. Por exemplo, o texto rendez-vous à midi (encontro ao meio-dia) com a palavra-chave bonjour (bom dia) será codificado da seguinte maneira:
Texto original:
r | e | n | d | e | z | v | o | u | s | a | m | i | d | i |
114 | 101 | 110 | 100 | 101 | 122 | 118 | 111 | 117 | 115 | 97 | 109 | 105 | 100 | 105 |
Palavra-chave:
b | o | n | j | o | u | r |
98 | 111 | 110 | 106 | 111 | 117 | 114 |
Texto criptografado:
r+b | e+o | n+n | d+j | e+o | z+u | v+r | o+b | u+o | s+n | a+j | m+o | i+u | d+r | i+b |
114 + 98 | 101 + 111 | 110 + 110 | 100 + 106 | 101 + 111 | 122 + 117 | 118 + 114 | 111 + 98 | 117 + 111 | 115 + 110 | 97 + 106 | 109 + 111 | 105 + 117 | 100 + 114 | 105 + 98 |
Para descriptografar esta mensagem, basta ter a chave secreta e fazer a decodificação inversa, utilizando a subtração.
Embora esta codificação seja muito mais segura do que a codificação César, ela pode, assim mesmo, ser quebrada facilmente. Quando as mensagens são muito mais longas do que a palavra-chave, é possível identificar o comprimento da palavra-chave e utilizar, para cada sequência de palavra-chave, o método de cálculo da frequência com que aparecem as letras, determinando assim, um a um, os caracteres das palavras-chave.
Para evitar este problema, uma solução consiste em utilizar uma palavra-chave cujo tamanho seja próximo daquele do texto, para evitar um estudo estatístico do texto criptografado. Este tipo de sistema de codificação é chamado de sistema one-time pad. O problema com este tipo de método é o comprimento da chave de criptografia (quanto maior o texto a ser criptografado, maior deverá ser a chave), que impede a sua memorização e implica numa probabilidade de erro na chave muito maior (um só erro torna o texto ilegível).