什么是XOR加密?

时间:2010-01-08 17:35:23

标签: encryption xor

我听说有人开始加密,并认为它可能是我想要的东西,所以我检查了XOR并且无法理解它。 那么有人可以向我解释XOR是什么吗?

8 个答案:

答案 0 :(得分:25)

你拿了一个密钥,比如0101,然后你用它来对你的字符串进行异或(以二进制格式)来实现一个加密的字符串。

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

您将1110发送给您的接收器。然后,该接收器获取接收到的字符串并使用密钥对其进行异或,以获取原始消息:

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

答案 1 :(得分:11)

XOR或'exclusive or'是2操作数逻辑操作,定义为:

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

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

XOR关于加密的关键特性是它是可逆的,即当C = A XOR B时,你可以使用A = C XOR B返回A.

因此,对于明文A流和相同长度B的密钥,您可以生成密码文本C,并将其发送给收件人。

收件人在他的保险箱中有B副本,可以做C XOR B并重新生成A.

答案 2 :(得分:6)

XOR是一个逻辑操作,发音为 exclusive或。它可以用来简单快速地加密消息。您可以在此处查看此操作的真值表:http://mathworld.wolfram.com/XOR.html

准伪代码实现(通过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

输出:

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

答案 3 :(得分:2)

在最简单的层面上,可逆操作(如XOR(发音为“异或”))构成foundation of most cryptography

XOR的作用类似于切换开关,您可以在其中打开和关闭特定位。如果你想“加扰”一个数字(比特模式),你可以用“secret”号码对它进行异或。如果您使用相同的密码获取该扰乱的号码并再次对其进行异或,则返回原始号码

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

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

这是非常的充实例子。当您使用XOR加密一系列数字(或文本或任何位模式)时,您有一个very basic cipher algorithm

答案 4 :(得分:2)

我写了一篇关于XOR加密的博客http://programmingconsole.blogspot.in/2013/10/xor-encryption-for-alphabets.html

数学上,XOR加密/密码是加密密码,一种根据以下原则运行的加密算法:

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

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

xor运算符就像AND(*)和OR(+)运算符一样 要解密密码,我们只需要使用密钥对密码进行异或,以重新获得原始文本。 XOR运算符是复杂加密算法中非常常见的组件。 通过使用恒定的重复键并使用频率分析,可以容易地破坏这种加密。  但是我们在每次加密之后更改密钥,这种加密在计算上非常困难  这种密码称为流密码,其中每个下一位都使用不同的伪随机密钥加密,德国人在他们的Lorentz密码中使用了这种加密。

通过使用真正随机的密钥流,密码在理论上是不可破解的,因此无法使用

我建议你看

  BBC:Code Breakers Bletchley Parks失去了英雄纪录片

它将为您提供有关密码学和加密位的真实见解。密码学有多重要?嗯,这是计算机发明的原因。

答案 5 :(得分:1)

XOR是'exclusive or'的缩写。如果A为真,或者如果B为真,则异或B为真,但如果A和B均为真,则为异。

它用于加密,因为A XOR B XOR A等于B - 所以如果你可以使用A作为加密和解密的密钥。

答案 6 :(得分:1)

应该注意,这种加密方法很难被认为是安全的。如果您对标头众所周知的任何公共文件(PNG,JPG等)进行加密,则可以从加密内容和已知标头轻松导出密钥。

答案 7 :(得分:0)

XOR加密也可以在cipher block chaining中使用。 XOR CBC用作许多加密实现的补充。有一个谷歌代码项目单独使用它,虽然单独的XOR不是很安全:http://code.google.com/p/xorencryption/