能不能简单易懂的对这个加密,进行解密

#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输出可以清楚看出解密结果

img

就是异或,1^1=0 ,1^0=1 0^1=1 0^0=0
打个比方,原来是1和1异或为0,再和1异或就恢复为1,就是和同一个数异或两次,将恢复原来的值