#include"stdio.h"
#include"string.h"
int main()
{
char n[100];//int c[100]={};
char b[100] = "ZnZz213036";
char h[100];
int i, j;
printf("输入:");
scanf_s("%s", n, sizeof(n));
j = strlen(b);
printf("\n");
for (i = 0; i < j; i++)
{
h[i] = n[i] ^ b[i];
printf("%02x", h[i]);
}
printf("\n\nZnZz213036");
}
这个简单吧,h[i] = n[i] ^ b[i],同样 n[i] = h[i] ^ b[i]的
这个b数组是个KEY,很重要,必须保护
比如:
int main()
{
char n[100];//int c[100]={};
char b[100] = "ZnZz213036";
char h[100];
char k[100];
int i, j;
printf("输入:");
scanf_s("%s", n, sizeof(n));
j = strlen(b);
printf("\n");
for (i = 0; i < j; i++)
{
h[i] = n[i] ^ b[i];
printf("%c", h[i]);
}
printf("\n");
for(i=0;i<j;i++)
{
k[i] = h[i] ^ b[i];
printf("%c",k[i]);
}
return 0;
}
用%c输出可以清楚看出解密结果
就是异或,1^1=0 ,1^0=1 0^1=1 0^0=0
打个比方,原来是1和1异或为0,再和1异或就恢复为1,就是和同一个数异或两次,将恢复原来的值