Introducción cifrado XOR.

Tomado del producto es ligeramente Biblioteca: http://www.pinlue.com/article/2020/03/1209/3910018006025.html

 

En este artículo se describe una forma sencilla y eficiente método de cifrado y muy seguro: el cifrado XOR.

A, operación XOR

Entre la operación lógica, además de AND y OR, hay una operación XOR, china llamada "operación de O exclusiva."

Se define como: dos valores son los mismos, devuelve falso, verdadero lo contrario. Es decir, XOR puede utilizarse para determinar si los dos valores son diferentes.

verdadera XOR cierto // falsa

false // XOR falsa

verdadero falso XOR // verdadera

verdadero falso XOR // verdadera

Javascript aritmética binaria, hay un operador XOR dedicado, ^ escritura.

1 ^ 1 // 0

0 ^ 0 // 0

1 ^ 0 // 1

0 ^ 1 // 1

Código anterior, si los dos bits del mismo binario, devuelve 0, lo que indica FALSE; 1 de lo contrario, indica cierto.

Dos, la aplicación XOR

operación XOR tiene una característica maravillosa: Si un valor XOR hacerlo dos veces, devolverá el valor en sí.

// primero XOR

1010 ^ 1111 // 0101

// segundo XOR

0101 ^ 1111 // 1010

En el código anterior, el valor original es 1010, a continuación, seleccionando al azar un valor (en el ejemplo es 1111), el XOR realiza dos veces, y finalmente será siempre conseguir el valor original 1010. Esto es matemáticamente muy fácil de demostrar.

En tercer lugar, la aplicación de cifrado

XOR de esta característica, por lo que puede ser utilizado para cifrar la información.

mensaje clave XOR // texto cifrado

texto cifrado XOR clave // ​​mensaje

En el código anterior, la información original es mensaje, clave es una clave, primero el texto cifrado será XOR texto cifrado. Después el otro lado de conseguir, y luego hacer una operación XOR clave, será reducida para dar el mensaje.

En cuarto lugar, el secreto perfecto

Durante la Segunda Guerra Mundial, los países de cifrado telégrafo fin, la criptografía hecho un gran trabajo de investigación y la práctica, incluido el cifrado XOR.

Después de la guerra, matemático estadounidense Shannon (Claude Shannon) su investigación publicada, demostró que el tiempo que se cumplen dos condiciones, el cifrado XOR es irrompible.

no es menos que la longitud de la clave de mensaje

clave debe ser desechables y generado de forma aleatoria cada vez

La razón es simple, si cada vez que la llave es al azar, a continuación, el texto cifrado ha generado todos los valores posibles, y están distribuidos de manera uniforme y no puede ser visto desde el texto cifrado cualquier característica de mensaje. En otras palabras, se tiene la mayor "entropía de la información" y por lo tanto imposible de descifrar. Esto se llama XOR "perfecta secreto" de (perfecto secreto).  

La clave anteriormente se cumplen dos condiciones, llamado el cojín de una sola vez (abreviado como el OTP), que significa "libreta de un solo", tales como la clave de cifrado anterior se imprimen, cada uso del tiempo, que debe ser seleccionado de la clave.

Cinco ejemplos: hash

El ejemplo siguiente utiliza XOR, contraseña de inicio de sesión del usuario está cifrada. Los resultados reales de funcionamiento que ver aquí.

El primer paso, cuando el usuario establece la contraseña de inicio de sesión, calcula un hash de la contraseña utilizada aquí es el algoritmo MD5, otros algoritmos hash también puede ser utilizado.

mensaje const = md5 (contraseña);

Una segunda etapa de generar una clave aleatoria.

// Generar un entero aleatorio en el rango [min, max]

función getRandomInt (min, max) {return Math.floor (Math.random () * (max - min + 1)) + min;} // generar un valor hexadecimal aleatorio entre 0 ~ f

función GetHex () {dejó que n = 0; para (dejar que i = 4; i> 0; i--) {n = (getRandomInt (0, 1) 1)) + n;} volver n.toString (16); } // genera un valor hexadecimal de 32 bits, se utiliza como una clave desechable

función getOTP () {const arr = []; para (dejo i = 0; i 32; i ++) {arr.push (GetHex ()); } Return arr.join ( ""); }

El código anterior, la clave generada es un valor hexadecimal de 32 bits correspondiente a 128 del hash MD5 binario generado.

Una tercera etapa de realizar la operación XOR para obtener el mensaje cifrado.

función getXOR (mensaje, clave) {const arr = []; para (dejo i = 0; i 32; i ++) {const m = parseInt (message.substr (i, 1), 16); const k = parseInt (key.substr (i, 1), 16); arr.push ((m ^ k) .toString (16)); } Return arr.join ( ""); }

Utilizar este método para guardar la contraseña de inicio de sesión del usuario, incluso si el texto cifrado filtró, siempre que la clave de una sola vez (llave) no se escapa, y el otro puede no agrietarse.

Publicado 60 artículos originales · ganado elogios 52 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/yihuliunian/article/details/104813501
Recomendado
Clasificación