一个数异或另一个数两次后,该数保持不变。即:
c = a^b;
c = c^b;
c == a;
将需要加密的内容看做A,密钥看做B,A ^ B=加密后的内容C。
而解密时只需要将C ^ 密钥B=原内容A。如果没有密钥,就不能解密!
这一规律就是使用异或运算对数据及文件进行加密处理的基本原理。
那就先贴下加密算法的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <stdio.h> #include <stdlib.h> #include <string.h> #define KEY 0x86 int main() { char p_data[16] = {"OmegaXYZ.com"}; 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; } |
效果:
为什么key 定义为0x86
key啊,你可以随便定义