用异或操作,实现简单的密码加解密处理
异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,
其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1
可以简单理解它为一个不进位的二进制加法:
0 + 0 = 0
1 + 1 = 0 (相当于高位的1 没进位)
1 + 0 = 1
它有如下性质:
1、交换律
2、结合律(即(a^b)^c == a^(b^c))
3、对于任何数x,都有x^x=0,x^0=x
4、自反性 A XOR B XOR B = A xor 0 = A
在此处,就利用了异或的自反性,与一个Key进行异或进行加密,再次异或实现解密处理
#include <stdio.h>
#include <string.h>
int nKey = 1899;
int main()
{
char psw[] = "ae+65&5汉2";
char* pTemp = psw;
printf("加密前的密码: %s\n", psw);
for (int i = 0; i< strlen(psw); i++)
{
*pTemp++ ^= nKey;
}
printf("加密后的密码: %s\n", psw);
pTemp = psw;
for (int i = 0; i < strlen(psw); i++)
{
*pTemp++ ^= nKey;
}
printf("解密的密码: %s\n", psw);
return 0;
}
\
类别: C/C++教程, 教程 Edit