Cifrado Vernam

Visualizador interactivo

Cifrado Vernam

One-Time Pad (XOR)

El resultado aparecera aqui

Control de animacion

Paso 0 / 0
Velocidad

Operacion XOR bit a bit

vernam.ts
1// Cifrado Vernam (One-Time Pad) - TypeScript
2export function vernamEncrypt(plaintext: string, key: string): string {
3 let ciphertext = ""
4
5 for (let i = 0; i < plaintext.length; i++) {
6 // Obtenemos los caracteres
7 const plainChar = plaintext[i]
8 const keyChar = key[i % key.length]
9 // Los transformamos a ASCII
10 const plainBinary = plainChar.charCodeAt(0)
11 const keyBinary = keyChar.charCodeAt(0)
12 // Le aplicamos XOR
13 let resultBinary = plainBinary ^ keyBinary
14 // Lo convertimos a caracter
15 ciphertext += String.fromCharCode(resultBinary)
16 }
17
18 return ciphertext
19}
20
21// --- Ejemplo de uso ---
22const plaintext = "HELLO"
23const key = "XMCKL"
24const encrypted = vernamEncrypt(plaintext, key)
25const hex = toHex(encrypted)
26const decrypted = vernamDecrypt(encrypted, key)
27
28console.log("Texto plano:", plaintext)
29console.log("Clave: ", key)
30console.log("Cifrado hex:", hex)
31console.log("Descifrado: ", decrypted)

Como funciona el cifrado Vernam

01

Conversion a binario

Cada caracter del texto plano y de la clave se convierte a su representacion binaria de 8 bits (ASCII).

02

Operacion XOR

Se aplica la operacion XOR bit a bit entre el texto plano y la clave. Si los bits son iguales el resultado es 0, si son diferentes es 1.

03

Resultado cifrado

El resultado de la operacion XOR produce el texto cifrado. Para descifrar, se aplica XOR nuevamente con la misma clave.