C语言:用异或^实现数据加密

来源:互联网 发布:mac西柚色口红专柜价格 编辑:程序博客网 时间:2024/05/22 09:46

“^”的意思是:当两个操作数对应位不相同时结果的相应位即为一,否则为零。当然,这里的对应位是指二进制的位。

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0


用“^”加密解密的原理:

将需要加密的内容看做A,密钥看做B,A ^ B=加密后的内容C。

而解密时只需要将C ^ 密钥B=原内容A。如果没有密钥,就不能解密!


实例:

#include <stdio.h>#include <stdlib.h>#include <string.h>#define KEY 0x86int main(){    char p_data[16] = {"Hello World!"};    char Encrypt[16]={0},Decode[16]={0};    int i;           for(i = 0; i < strlen(p_data); i++)    {Encrypt[i] = p_data[i] ^ KEY;    }    for(i = 0; i < strlen(Encrypt); i++)    {Decode[i] = Encrypt[i] ^ KEY;    }    printf("Initial date:  %s\n",p_data);    printf("Encrypt date:  %s\n",Encrypt);    printf("Decode date:  %s\n",Decode);    return 0;}

运行结果:

Initial date:  Hello World!Encrypt date:  毋觋棣验絷猝Decode date:  Hello World!


加密解密还支持多重加密,但是要记得加密的次数,解密时运用相同密钥做解密操作相同次数即可。

不仅如此,加密解密还支持多重不同密钥加密,只要你记得加密使用密钥!



0 0