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.
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.
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
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 26A fórmula de descriptografia é,
Deu= (Eeu-Keu) contra 26Se 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.
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('VIGENERECIPHER'); string original = 'I AM INDIAN'; string encrypted = cipher.encrypt(original); string decrypted = cipher.decrypt(encrypted); cout << original << endl; cout << 'Encrypted: ' << encrypted << endl; cout << 'Decrypted: ' << decrypted << endl; } class Vigenere { public: string key; Vigenere(string key) { for (int i = 0; i = 'A' && key[i] key += key[i]; else if (key[i]>= 'a' && key[i] key += key[i] + 'A' - 'a'; } } string encrypt(string text) { string out; for (int i = 0, j = 0; i = 'a' && 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></=>
=>