现代密码是建立在计算机的基础之上。计算机操作的对象不是文字,而是由0和1组成的比特序列。无论是文字、图像、声音、视频还是程序,在计算机中都是用比特序列来表示的。将他们转换成比特序列的操作叫做编码。编码并不是加密,而是将明文转换成计算机能看懂的比特序列。例如对love中的每个字母逐一进行ASCII编码:
l: 01101100
o: 01101111
v: 01110110
e: 01100101
XOR运算:
XOR又叫异或运算。1个比特的XOR运算的规则如下:
0 XOR 0= 0
0 XOR 1= 1
1 XOR 0 =1
1 XOR 1= 0
大家可以发现这样一个规律:两个相同的数进行XOR运算的结果一定为0。
如果是两个长的比特序列进行XOR运算,只要对其中每个相对应的比特进行XOR就可以了。由于两个相同的数进行XOR运算的结果一定为0,因此如果将A XOR B的结果再与B进行XOR运算,由于公式中的两个BXOR为0,则结果又会变回A。这样的步骤和加密、解密的步骤非常相似:
1、讲明文A用密钥B进行加密,得到密文AXOR B
2、将密文A XOR B用密钥B解密,得到明文A
只要选择一个不可预测的B,仅仅用XOR就能实现一个高强度的密码。