logo

Cifrado Vigenère

Introducción

El cifrado vigenere es un algoritmo que se utiliza para cifrar y descifrar el texto. El cifrado vigenere es un algoritmo de cifrado de un texto alfabético que utiliza una serie de cifrados César entrelazados. Se basa en las letras de una palabra clave. Es un ejemplo de cifrado de sustitución polialfabética. Este algoritmo es fácil de entender e implementar. Este algoritmo fue descrito por primera vez en 1553 por Giovan Battista Bellaso . Utiliza una tabla Vigenere o un cuadrado Vigenere para cifrar y descifrar el texto. La tabla vigenere también se llama tabula recta.

Dos métodos realizan el cifrado vigenere.

Método 1

Cuando se proporciona la tabla vigenere, el cifrado y descifrado se realizan utilizando la tabla vigenere (matriz 26 * 26) en este método.

Cifrado Vigenère

Ejemplo: el texto sin formato es 'JAVATPOINT' y la clave es 'MEJOR'.

Para generar una nueva clave, la clave dada se repite de forma circular, siempre que la longitud del texto sin formato no sea igual a la nueva clave.

Cifrado Vigenère

Cifrado

jdbc jdbc

La primera letra del texto plano se combina con la primera letra de la clave. La columna de texto sin formato 'J' y la fila de la clave 'B' se cruzan con el alfabeto de 'K' en la tabla vigenere, por lo que la primera letra del texto cifrado es 'K'.

De manera similar, la segunda letra del texto plano se combina con la segunda letra de la clave. La columna de texto sin formato 'A' y la fila de la clave 'E' se cruzan con el alfabeto de 'E' en la tabla vigenere, por lo que la segunda letra del texto cifrado es 'E'.

Este proceso continúa continuamente hasta que finaliza el texto sin formato.

Texto cifrado = KENTUTGBOX

Descifrado

El descifrado se realiza mediante la fila de claves en la tabla vigenere. Primero, seleccione la fila de la letra clave, busque la posición de la letra del texto cifrado en esa fila y luego seleccione la etiqueta de la columna del texto cifrado correspondiente como texto sin formato.

Cifrado Vigenère

Por ejemplo, en la fila de la clave está 'B' y el texto cifrado es 'K' y esta letra del texto cifrado aparece en la columna 'J', eso significa que la primera letra del texto sin formato es 'J'.

A continuación, en la fila de la clave está 'E' y el texto cifrado es 'E' y esta letra del texto cifrado aparece en la columna 'A', eso significa que la segunda letra del texto sin formato es 'A'.

plsql

Este proceso continúa continuamente hasta que finaliza el texto cifrado.

Texto sin formato = PUNTO JAVAT

Método 2

Cuando no se proporciona la tabla vigenere, el cifrado y descifrado se realizan mediante la fórmula algebraica de Vigenar en este método (convierta las letras (A-Z) en números (0-25)).

La fórmula de cifrado es,

Yi= (Pi+ki) contra 26

La fórmula de descifrado es,

Di= (mii-ki) contra 26

Si hay algún caso (Di) el valor se vuelve negativo (-ve), en este caso, sumaremos 26 al valor negativo.

Dónde,

E denota el cifrado.

¿Qué es $home Linux?

D denota el descifrado.

P denota el texto sin formato.

K denota la clave.

Nota: 'i' denota el desplazamiento del iésimo número de letras, como se muestra en la siguiente tabla.

Cifrado Vigenère

Ejemplo: el texto sin formato es 'JAVATPOINT' y la clave es 'MEJOR'.

Cifrado: Yi= (Pi+ki) contra 26

programa de matriz bidimensional en c
Texto sin formato j A EN A t PAG oh I norte t
Valor de texto sin formato (P) 09 00 21 00 19 15 14 08 13 19
Llave B Y S t B Y S t B Y
Valor clave (K) 01 04 18 19 01 04 18 19 01 04
Valor de texto cifrado (E) 10 04 13 19 20 19 06 01 14 23
Texto cifrado k Y norte t EN t GRAMO B oh X

Descifrado: Di= (mii-ki) contra 26

Si en algún caso el valor (Di) se vuelve negativo (-ve), en este caso, sumaremos 26 al valor negativo. Como la tercera letra del texto cifrado;

N = 13 y S = 18

Di= (mii-ki) contra 26

Di= (13 - 18) contra 26

Di= -5 contra 26

Di= (-5 + 26) contra 26

Di= 21

Texto cifrado k Y norte t EN t GRAMO B oh X
Valor de texto cifrado (E) 10 04 13 19 20 19 06 01 14 23
Llave B Y S t B Y S t B Y
Valor clave (K) 01 04 18 19 01 04 18 19 01 04
Valor de texto sin formato (P) 09 00 21 00 19 15 14 08 13 19
Texto sin formato j A EN A t PAG oh I norte t

Programa:

lenguaje 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></=>