异或运算(XOR)有一个非常重要的性质:自反性。也就是说,对一个数据进行两次相同的异或操作,会得到原始数据。
异或运算是按位进行操作的,在按位进行操作之前,先对数据进行转换,转换为 二进制, 然后再进行异或运算;敲黑板(重点):按位异或(^)的规则:相同为0,不同为1
0 和 0 异或 = 0
1 和 1 异或 = 0
0 和 1 异或 = 1
1 和 0 异或 = 1
首先要先了解一下ASCII编码,可以自行搜索一下ASCII表:
ASCII 编码于 1967 年第一次发布,最后一次更新是在 1986 年,迄今为止共收录了 128 个字符,包含了基本的拉丁字母(英文字母)、阿拉伯数字(也就是 1234567890)、标点符号(,.!等)、特殊符号(@#$%^&等)以及一些具有控制功能的字符(往往不会显示出来)(此段文字是我复制别人的)
以下为部分ASCII编码:
从一个简单的例子开始:
给出一个字符:a, 这个字符就是原始数据, 然后再给出一个任意字符/数字,比如:8, 我们可以称这个数为密钥, 'a' 的 ASCII为97(转换为二进制:01100001), 8的二进制:00001000
97是如何转换为二进制的?二进制是有0和1组成,满2进1,用0000 0001 表示 1, 用0000 0010表示2, 0000 0011 表示3,由此可得,从右往左第1位为1的时候,是1, 第2位为1的时候是2,第3位为1的时候是4,第4位为1的时候是8
得出:
那么 97 如何转换为二进制呢?
97 = 64 + 32 + 1, 放入二进制中就是 0000 0110 0001, 前面的0可以忽略,变成 110 0001,为了好看(或方便计算),保留一个: 0110 0001
8的二进