异或加密是一种很简单的加密算法,无论是原理还是操作性上,都不具备任何难度。
异或运算符为XOR,在计算机中通常用"^"的符号表示(在英文模式下,按住shift键+键盘上方的数字6)。
在二进制中:
1 XOR 0=1
0 XOR 1=1
1 XOR 1=0
0 XOR 0=0
可以看出若两个数相同取0,不同取1。
例:
运算11001 ^ 01011=10010
用其他进制表示的数做异或运算时,则应先将他们化为二进制的数,再做运算。(不足的位在前边填0补齐)
例:
计算6^3=110^011=101
异或运算具有可逆性。
我们不妨对异或的可逆性进行推广,对任意的两串二进制数做异或,得到的结果,再与其中任意一串二进制数做异或,得到另一串二进制数。
即a^b=c , 则 b^c=a.(a,b,c分别表示一串二进制数)
与上面的公式形式上是相同的。
那么,若a是想要加密的信息,则有一密钥b,对a和b做异或,得到的c就是加密后的信息,可进行传输。
得到c后,只需要再 与b做异或,即可得到原信息a。
若应用到字符串上,则字符串上每一个字符都表示一串二进制数。
#!/usr/bin/python # -*- coding:utf8 - a = 'password' b = 'enpassword' c = '' len = len(a) for i in range(len): for j in b: c+= chr(ord(j)^i) print (c)