XOR es una operación que siempre se puede revertir, toda la información se retiene. Es tan simple como eso. El uso de AND y OR puede provocar la pérdida de información porque no se puede saber si ciertos bits fueron 1 o 0 en los operandos.
Jugando un poco con la respuesta de python, usaremos 19 ( 10011
) y 5 ( 101
) ya que estos números son buenos ejemplos.
Al utilizar OR, se pierde la información sobre cuál de los operandos tenía un poco de:
>>> bin(19|5)
'0b10111'
¿No es eso 19? Sí, eso es 19. El número resultante no puede decirnos que ha sido ORed con 5.
Usar AND es lo mismo:
>>> bin(19&5)
'0b1'
Eso es 1. No hay forma de que no recuperemos ninguno de los números (19 o 5) fácilmente, perdimos información nuevamente.
XOR es bueno para las herramientas criptográficas porque no pierde información cuando XORing:
>>> bin(19^5)
'0b10110'
Eso es 22. Aparentemente eso no nos dice mucho, pero mira esto:
>>> bin(22^5)
'0b10011'
>>> bin(22^19)
'0b101'
Puedes recuperar cualquiera de los dos números al XORAR los 22 con el otro número. Esa es una concepción muy primitiva de una clave secreta. Suponiendo que usted y otra persona puedan tener una gran lista de números muy grandes y aleatorios (ambos tienen los mismos números), puede simplemente enviar mensajes XOR y luego intercambiarlos de forma segura entre ustedes. Siempre y cuando usen un número diferente cada vez que se comuniquen, es un algoritmo seguro. El algoritmo se llama un teclado de una sola vez .