您的位置:首页 > 编程语言 > C语言/C++

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

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

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 0x86

int 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!


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

不仅如此,加密解密还支持多重不同密钥加密,只要你记得加密使用密钥!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: