异或运算:^
定义:它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。
特点:如果对一个值连续做两次 XOR,会返回这个值本身。
1010 ^ 1111 // 第一次异或后结果:0101 0101 ^ 1111 // 第二次异或后结果:1010
上面代码中,原始值是1010,再任意选择一个值(上例是1111),做两次 XOR,最后总是会得到原始值1010。这 在数学上是很容易证明的。
加密应用:
XOR 的这个特点,使得它可以用于信息的加密。
message XOR key // cipherText cipherText XOR key //message
上面代码中,原始信息是message,密钥是key,第一次 XOR 会得到加密文本cipherText。对方拿到以后,再用 key做一次 XOR 运算,就会还原得到message
c语言实现:
#include <stdio.h> #define key 0x86 int main(int argc, char *argv[]) { char text[100]; int i,j; for(i=0;i<100;i++){ text[i]=getchar(); if(text[i]==' '){ text[i]='