加密和解密

来源:互联网 发布:滴胶印花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
原创粉丝点击