Cifrado Vernam
Visualizador interactivo
XOROne-Time Pad
Cifrado Vernam
One-Time Pad (XOR)
El resultado aparecera aqui
Control de animacion
Paso 0 / 0Velocidad
Operacion XOR bit a bit
vernam.ts
1// Cifrado Vernam (One-Time Pad) - TypeScript2export function vernamEncrypt(plaintext: string, key: string): string {3 let ciphertext = ""45 for (let i = 0; i < plaintext.length; i++) {6 // Obtenemos los caracteres7 const plainChar = plaintext[i]8 const keyChar = key[i % key.length]9 // Los transformamos a ASCII10 const plainBinary = plainChar.charCodeAt(0)11 const keyBinary = keyChar.charCodeAt(0)12 // Le aplicamos XOR13 let resultBinary = plainBinary ^ keyBinary14 // Lo convertimos a caracter15 ciphertext += String.fromCharCode(resultBinary)16 }1718 return ciphertext 19}2021// --- Ejemplo de uso ---22const plaintext = "HELLO"23const key = "XMCKL"24const encrypted = vernamEncrypt(plaintext, key)25const hex = toHex(encrypted)26const decrypted = vernamDecrypt(encrypted, key)2728console.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.