加密和解密
来源:互联网 发布:滴胶印花t恤 知乎 编辑:程序博客网 时间:2024/05/29 15:23
加密原理:在数学上有这么一个知识点:一个数a异或另一个数b等于数c。
而数c异或a等于b,数c异或b等于a。a^b=c -> c^b=a,c^a=b
我们要依据这个原理来实现我们的工程。个人感觉比较好玩,试一下:
#include <stdio.h>#include <string>#include <iostream>using namespace std;void copy();void jiami();void jiemi();int main(){int flag;printf("请输入你的选择:0:复制,1:加密,2:解密\n");scanf("%d",&flag);switch(flag){case 0:copy();break;case 1:jiami();break;case 2:jiemi();break;default:printf("你的选择有误。\n");}system("pause");return 0;}void copy(){FILE *fr,*fw;char rname[50],wname[50] = "copy_",c;printf("please input the file name:");scanf("%s",rname);strcat(wname,rname);fr = fopen(rname,"rb");fw = fopen(wname,"wb");while(!feof(fr)){c = fgetc(fr);fputc(c,fw);}}void jiami(){FILE *fr,*fw;char rname[50],wname[50] = "mf_",c;int password;printf("please input the file name you want to encrypt:");scanf("%s",rname);strcat(wname,rname);printf("please input your password:");scanf("%d",&password);fflush(stdin);fr = fopen(rname,"rb");fw = fopen(wname,"wb");while(!feof(fr)){c = fgetc(fr);c ^= password;//异或fputc(c,fw);}return;}void jiemi(){FILE *fr,*fw;char rname[50],wname[50] = "xf_",c;int password;printf("please input the file name you want to decrypt:");scanf("%s",rname);strcat(wname,rname);printf("please input your password:");scanf("%d",&password);fflush(stdin);fr = fopen(rname,"rb");fw = fopen(wname,"wb");while(!feof(fr)){c = fgetc(fr);c ^= password;//异或fputc(c,fw);}return;}
输出结果如下:
0:复制,之后的视频还能继续播放
1:加密,之后的视频不能播放了
2. 解密,用异或对刚才加密的视频进行解密,解密后又能继续播放了。
来看看目录下的文件:
欢迎学习!!
0 0
- 数据加密和解密
- XML加密和解密
- Base64加密和解密
- 加密和解密算法
- 加密和解密
- Java加密和解密
- java 加密和解密
- 加密和解密
- EFS加密和解密
- AES加密和解密
- 加密和解密
- 加密和解密
- 加密和解密字符串。
- MySQL加密和解密
- 数据加密和解密
- 加密和解密
- C#加密和解密
- Java加密和解密
- java设计模式——创建型之工厂三兄弟(1)
- 使子控件超出父控件的限制
- bzoj3504 危桥
- 面试笔试杂项积累-Unity
- w3c盒模型和ie盒子模型
- 加密和解密
- JavaScript事件绑定与冒泡捕获
- mini-uboot 启动过程简单分析
- [LeetCode]Self Crossing
- CentOS7.x安装MongoDB3.2.3教程
- BZOJ 2088/POI 2010 Teleportation
- 80. Remove Duplicates from Sorted Array II
- OpenCV3.1-vc2008编译
- python requests库 笔记