基于异或位运算对数据进行加密或者解密,一般用在流式密码加密中。
go get -u github.com/cryptography-research-lab/go-xor
关于XOR秘钥重用攻击的介绍请参见五、XOR秘钥重用攻击部分,此处只是代码使用的API。
TODO
当XOR使用同一个秘钥多次进行加密的时候存在几种被攻击利用的方式:
-
能够进行加密,拿到已知的明文和密文,就可以对其他任意密文进行解密
-
能够拿到一批密文,通过这批密文推测出明文,不需要已知任何明文
假设A、B为明文,cipherA和cipherB尾加密后的密文,K为秘钥
A的密文cipherA:
cipherA = XOR(A, K) = A XOR K
B的密文cipherB:
cipherB = XOR(B, K) = B XOR K
则XOR(cipherA, cipherB):
XOR(cipherA, cipherB) = (A ^ K) ^ (B ^ K) = A ^ B ^ (K ^ K) = A ^ B ;
E(A) XOR E(B) XOR B = A XOR B XOR B = A;