A Cifra de Vigenère-Vernam é uma cifra elementar simétrica em que cada caracter da mensagem é deslocado no alfabeto de acordo com uma chave repetitiva.
A chave é uma palavra qualquer de tamanho \(n\). Ou seja, fixo \(n\), existem \(|\mathcal{A}|^{26}\) senhas possíveis. A fim de comparação, usando o nosso alfabeto é necessária uma senha de \(19\) caracteres para que hajam tantas senhas para a cifra de Vigenère quanto existem substituições simples, pois \(26^{19} \approx 7.66 \times 10^{26}\) e \(26! \approx 4.03 \times 10^{26}\).
Essencialmente, somamos o valor do n-ésimo caracter da mensagem ao valor do n-ésimo caracter da chave, reutilizando a chave quando ela acaba.
Mais precisamente, cada letra do alfabeto \(\mathcal{A}\) é associado a um valor numérico. Então, para cada letra \(x_i\) da mensagem, somamos o valor \(c_j\) da chave módulo \(|\mathcal{A}|\), em que o caracter a ser utilizado é o \(j = i\ \text{mod}\ |\mathcal{A}|\). Em outras palavras, \[ f(x_i) = x_i + c_j \ \text{mod} \ |\mathcal{A}| \] onde \[ j = i\ \text{mod}\ |\mathcal{A}| \]
Para decriptar, basta fazer o contrário: subtrair o valor dos caracteres da mensagem pelo valor dos caracteres da chave, reutilizando-a quando acabar.
Ou seja, \[ f^{-1}(y_i) = y_i - c_j \ \text{mod} \ |\mathcal{A}| \]