2010-01-08 20 views
12

He oído que las personas comienzan a encriptar y pensaron que podría ser algo que me gustaría, así que revisé XOR y no puedo encontrarle sentido. Entonces, ¿alguien puede explicarme qué es XOR?¿Qué es el cifrado XOR?

+8

http://en.wikipedia.org/wiki/XOR_cipher – miku

Respuesta

6

XOR es una operación lógica, pronunciada exclusiva o. Se puede usar para cifrar mensajes de forma simple y rápida. Se puede ver una tabla de verdad para esta operación aquí: http://mathworld.wolfram.com/XOR.html

implementación del código cuasi-seudo (a través de http://www.evanfosmark.com/2008/06/xor-encryption-with-python/):

#!/usr/bin/env python 

from itertools import izip, cycle 

def xor_crypt_string(data, key): 
    return ''.join(chr(ord(x)^ord(y)) for (x,y) in izip(data, cycle(key))) 

my_data = "Hello. This is a secret message! How fun." 
my_key= "firefly" 

# Do the actual encryption 
encrypted = xor_crypt_string(my_data, key=my_key) 

print encrypted 
print '---->' 

# This will obtain the original data from the encrypted 
original = xor_crypt_string(encrypted, key=my_key) 

print original 

Salida:

.  BY2F 
FRR 
DF$IB 
----> 
Hello. This is a secret message! How fun. 
10

XOR, o 'exclusiva o' es una operación lógica 2 operando define como:

(a and b) or (not a and not b) 

a b result 
0 0 0 
1 0 1 
0 1 1 
1 1 0 

La característica crítica de XOR con respecto al cifrado es que es reversible, es decir, donde C = A XOR B, entonces puede recuperar A usando A = C XOR B.

De modo que para una secuencia de texto plano A y una clave de la misma longitud B, puede generar cryptotext C y enviarlo al destinatario.

El receptor, que tiene una copia de B en su caja fuerte, puede hacer C XOR B y regenerar A.

+0

Si B se usa solo una vez, se trata de un cifrado de pad único, el único tipo de encriptación teóricamente irrompible. –

24

se toma una clave, tales como 0101, y luego se lo utiliza para XOR la ​​cadena (en binario formato) para lograr una cadena encriptada.

0101 XOR <-- key 
1011 <---- original message 
---- 
1110 <-- send message 

Usted envía 1110 a su receptor. Ese receptor, a continuación, toma la cuerda y XORs recibió con la clave para obtener el mensaje original:

1110 XOR <--- received message 
0101 <-- key 
---- 
1011 <--- original message 
1

XOR es la abreviatura de 'exclusiva o'. A XOR B es verdadero si A es verdadero, o si B es verdadero, pero no si ambos A y B son verdaderos.

Se utiliza para la criptografía porque A XOR B XOR A es igual a B, por lo que puede utilizar A como clave para el cifrado y el descifrado.

1

Debe tenerse en cuenta, que este método de El cifrado difícilmente puede considerarse seguro. Si cifra un archivo común (PNG, JPG, etc.) donde el encabezado es bien conocido, la clave se puede derivar fácilmente del contenido cifrado y del encabezado conocido.

+1

En realidad, depende de la implementación. Si la longitud de la clave es menor que la longitud del mensaje, la clave se repetirá y puede derivarse. Si la longitud de la clave es la misma que la longitud del mensaje, y nunca utiliza la misma tecla dos veces, básicamente tiene un pad de una sola vez que no se puede romper. – Marko

+0

Sin embargo, debe encontrar la manera de transmitir la clave de forma segura al destinatario, y si pudiera hacerlo, podría haber enviado el mensaje utilizando ese canal seguro. (De ahí que OTP no se use mucho en el mundo real). – Noah

2

En el nivel más simple, las operaciones reversibles como XOR (pronunciado "O exclusivo") forman el foundation of most cryptography.

XOR actúa como un interruptor de palanca donde puede activar y desactivar bits específicos. Si desea "codificar" un número (un patrón de bits), lo XOR con un número "secreto". Si toma ese número codificado y XOR de nuevo con el mismo número secreto, devuelve su número original.

 
Encrypt a number (210) with a secret "key" (145). 

        210 XOR 145gives you 65 ←-- your "scrambled" result 
             | 
        + now unscramble it + 
        | 
        ↓ 
        65 XOR 145gives you 210 ←-- and back to your original number 

Este es un ejemplo muy rudamentary . Cuando cifra una secuencia de números (o texto o cualquier patrón de bits) con XOR, tiene un very basic cipher algorithm.

+0

No es realmente la base de la criptografía * all *, ya que las cifras de bloque tienen varios modos que nunca hacen un solo XOR, como ECB, OFB y CFB. También cualquier operación reversible puede tomar el lugar de XOR, como la suma/resta mod 256 como un ejemplo común. –

+0

Aclaré un poco la publicación. –

2

escribí un blog sobre el cifrado XOR http://programmingconsole.blogspot.in/2013/10/xor-encryption-for-alphabets.html

Matemáticamente, el cifrado XOR/cifrado es cifrado aditivo, una algoritmo de cifrado que opera de acuerdo con los siguientes principios:

(A * B) + (!A * !B) 

A B A XOR B 
0 0  0 
1 0  1 
0 1  1 
1 1  0 

operador XOR es como y (*) y OR (+) operador para descifrar el cifrado sólo tenemos que XOR el sistema de cifrado con la clave para recuperar el original texto. El operador XOR es un componente extremadamente común en Algoritmos de encriptación complejos. Tal cifrado se puede romper fácilmente mediante el uso de una tecla de repetición constante y el uso de análisis de frecuencia. Pero cambiamos la clave después de cada encriptación. Dicha encriptación es computacionalmente muy difícil tal cifrado se denomina cifrado de flujo en el que cada bit siguiente se cifra utilizando una clave pseudoaleatoria diferente, tal tipo de cifrado fue utilizado por los alemanes en su cifrado de Lorentz.

Mediante el uso de una corriente verdaderamente aleatoria * de la llave de la cifra es teóricamente irrompible, por tanto, inutilizable

yo le recomendaría a ver

BBC: Code Breakers Parques Bletchley perdieron Héroes documental

Le brindará información real sobre el mundo de la criptografía y los bits encriptados. ¿Qué tan importante es la criptografía? Bueno, fue la causa de la invención de las computadoras.

Cuestiones relacionadas