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。如果没有密钥,就不能解密!
实例:
运行结果:
加密解密还支持多重加密,但是要记得加密的次数,解密时运用相同密钥做解密操作相同次数即可。
不仅如此,加密解密还支持多重不同密钥加密,只要你记得加密使用密钥!
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!
加密解密还支持多重加密,但是要记得加密的次数,解密时运用相同密钥做解密操作相同次数即可。
不仅如此,加密解密还支持多重不同密钥加密,只要你记得加密使用密钥!
相关文章推荐
- 如何理解C语言数组
- C语言基础学习教程
- STL编程题1(C++程序设计第1周)
- 8.4总结
- C语言二维数组(第十天)
- RunTime详解-------
- c/c++第十天
- c++避免内存泄漏
- leetcode_c++: Integer to Roman(012)
- C++中的istringstream 的用法 HDU 2072单词数
- C语言学习6
- C语言 二维数组
- C++之stl::string写时拷贝导致的问题
- leetcode_c++: Regular Expression Matching(010)
- SkipList跳表的实现
- C语言_动态链表的简单建立与节点删除
- C++连续输入带空格的字符串
- c++之内存管理
- 极客班 c++(下)第一周学习笔记 ——new & delete
- 二维数组的小秘密