logo

Cifra de Vigènere

Introdução

A cifra vigenere é um algoritmo usado para criptografar e descriptografar o texto. A cifra vigenere é um algoritmo de criptografia de um texto alfabético que usa uma série de cifras de césar entrelaçadas. É baseado nas letras de uma palavra-chave. É um exemplo de cifra de substituição polialfabética. Este algoritmo é fácil de entender e implementar. Este algoritmo foi descrito pela primeira vez em 1553 por Giovan Battista Bellaso . Ele usa uma tabela Vigenere ou quadrado Vigenere para criptografar e descriptografar o texto. A mesa vigenere também é chamada de tabula recta.

Dois métodos executam a cifra vigenere.

Método 1

Quando a tabela vigenere é fornecida, a criptografia e a descriptografia são feitas usando a tabela vigenere (matriz 26 * 26) neste método.

Cifra de Vigènere

Exemplo: O texto simples é 'JAVATPOINT' e a chave é 'BEST'.

Para gerar uma nova chave, a chave fornecida é repetida de forma circular, desde que o comprimento do texto simples não seja igual ao da nova chave.

Cifra de Vigènere

Criptografia

o que é hibernar

A primeira letra do texto simples é combinada com a primeira letra da chave. A coluna de texto simples 'J' e a linha da chave 'B' cruzam o alfabeto de 'K' na tabela vigenere, então a primeira letra do texto cifrado é 'K'.

Da mesma forma, a segunda letra do texto simples é combinada com a segunda letra da chave. A coluna de texto simples 'A' e a linha da chave 'E' cruzam o alfabeto de 'E' na tabela vigenere, então a segunda letra do texto cifrado é 'E'.

Este processo continua continuamente até que o texto simples seja concluído.

Texto cifrado = KENTUTGBOX

Descriptografia

A descriptografia é feita pela linha de chaves na tabela vigenere. Primeiro, selecione a linha da letra-chave, encontre a posição da letra do texto cifrado nessa linha e, em seguida, selecione o rótulo da coluna do texto cifrado correspondente como texto simples.

inteiro para string
Cifra de Vigènere

Por exemplo, na linha da chave está 'B' e o texto cifrado é 'K' e esta letra do texto cifrado aparece na coluna 'J', o que significa que a primeira letra do texto simples é 'J'.

A seguir, na linha da chave está 'E' e o texto cifrado é 'E' e esta letra do texto cifrado aparece na coluna 'A', o que significa que a segunda letra do texto simples é 'A'.

Este processo continua continuamente até que o texto cifrado seja concluído.

Texto simples = JAVATPOINT

Método 2

Quando a tabela vigenere não é fornecida, a criptografia e a descriptografia são feitas pela fórmula algébrica de Vigenar neste método (converta as letras (AZ) em números (0-25)).

A fórmula da criptografia é,

Eeu= (Peu+Keu) contra 26

A fórmula de descriptografia é,

Deu= (Eeu-Keu) contra 26

Se algum caso (Deu) o valor torna-se negativo (-ve), neste caso adicionaremos 26 ao valor negativo.

Onde,

E denota a criptografia.

objeto em programação java

D denota a descriptografia.

P denota o texto simples.

K denota a chave.

Nota: 'i' denota o deslocamento do i-ésimo número das letras, conforme mostrado na tabela abaixo.

Cifra de Vigènere

Exemplo: O texto simples é 'JAVATPOINT' e a chave é 'BEST'.

Criptografia: Eeu= (Peu+Keu) contra 26

Texto simples J. A EM A T P O EU N T
Valor de texto simples (P) 09 00 vinte e um 00 19 quinze 14 08 13 19
Chave B E S T B E S T B E
Valor-chave (K) 01 04 18 19 01 04 18 19 01 04
Valor do texto cifrado (E) 10 04 13 19 vinte 19 06 01 14 23
Texto cifrado K E N T EM T G B O X

Descriptografia: Deu= (Eeu-Keu) contra 26

Se em algum caso o valor (Di) ficar negativo (-ve), neste caso, adicionaremos 26 ao valor negativo. Tipo, a terceira letra do texto cifrado;

N = 13 e S = 18

Deu= (Eeu-Keu) contra 26

Deu= (13 - 18) contra 26

Deu= -5 contra 26

listas java

Deu= (-5 + 26) contra 26

Deu= 21

Texto cifrado K E N T EM T G B O X
Valor do texto cifrado (E) 10 04 13 19 vinte 19 06 01 14 23
Chave B E S T B E S T B E
Valor-chave (K) 01 04 18 19 01 04 18 19 01 04
Valor de texto simples (P) 09 00 vinte e um 00 19 quinze 14 08 13 19
Texto simples J. A EM A T P O EU N T

Programa:

Linguagem C

 #include #include using namespace std; int main() { Vigenere cipher(&apos;VIGENERECIPHER&apos;); string original = &apos;I AM INDIAN&apos;; string encrypted = cipher.encrypt(original); string decrypted = cipher.decrypt(encrypted); cout &lt;&lt; original &lt;&lt; endl; cout &lt;&lt; &apos;Encrypted: &apos; &lt;&lt; encrypted &lt;&lt; endl; cout &lt;&lt; &apos;Decrypted: &apos; &lt;&lt; decrypted &lt;&lt; endl; } class Vigenere { public: string key; Vigenere(string key) { for (int i = 0; i = &apos;A&apos; &amp;&amp; key[i] key += key[i]; else if (key[i]&gt;= &apos;a&apos; &amp;&amp; key[i] key += key[i] + &apos;A&apos; - &apos;a&apos;; } } string encrypt(string text) { string out; for (int i = 0, j = 0; i = &apos;a&apos; &amp;&amp; c <= 2 26 'z') c +="A" - 'a'; else if (c continue; out key[j] * 'a') % j="(j" 1) key.length(); } return out; string decrypt(string text) { for (int i="0," && <="z" ) 26) }; pre> <p> <strong>Output:</strong> </p> <pre> I AM INDIAN Encrypted: SDERFGTUJ Decrypted: IAMINDIAN </pre> <hr></=>