我听说有人开始加密,并认为它可能是我想要的东西,所以我检查了XOR并且无法理解它。 那么有人可以向我解释XOR是什么吗?
答案 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/