C++ 简单的文件加密和解密 实例
来源:互联网 发布:sinx幂级数展开知乎 编辑:程序博客网 时间:2024/05/17 02:19
一段 文件加密的程序,看完之后,明白了它所谓的文件加密,其实原理相当简单:
即是按字节 或 按位 读取一个要加密的文件中的数据,然后与我们自己输入的密码做一些 算法操作,将新的数据写入到新文件中,这个新文件就是我们的加密后的文件。
于是我就自己设计了一个简单的加密算法,用它实现了文件的加密,附带着写了一个解密算法。希望供大家参考
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- void encfile(char *in_filename,char *pwd,char *out_filename);/*对文件进行加密的具体函数*/
- void decryptfile(char* in_filename,char *pwd,char *out_filename); /*对文件解密的具体函数*/
- int main(int argc,char *argv[])/*定义main()函数的命令行参数*/
- {
- int option; /*功能选择*/
- char in_filename[30];/*用户输入的要加密的文件名 或是 要解密的文件*/
- char out_filename[30]; /*用户输入加密后保存的文件名 或是解密保存的文件名*/
- char pwd[8];/*用来保存密码*/
- printf(" thank you for using this program....../n");
- printf("1. Encrypt a file 2. Decrypt a file/n");
- printf("chose your option.....");
- scanf("%d",&option);
- getchar();
- if(argc!=4){/*容错处理*/
- printf("/nPlease input In-filename:/n");
- gets(in_filename);/*得到要加密的文件名*/
- printf("Please input your Password:/n");
- gets(pwd);/*得到密码*/
- printf("Please input Out-filename:/n");
- gets(out_filename);/*得到加密后你要的文件名*/
- }
- else{/*如果命令行参数正确,便直接运行程序*/
- strcpy(in_filename,argv[1]);
- strcpy(pwd,argv[2]);
- strcpy(out_filename,argv[3]);
- }
- switch(option){
- case 1: //加密
- encfile(in_filename,pwd,out_filename);/*加密函数调用*/
- break;
- case 2://解密
- decryptfile(in_filename,pwd,out_filename);/*解密函数调用*/
- break;
- default:
- break;
- }
- system("pause");
- return 0;
- }
- /*加密子函数开始*/
- void encfile(char *in_filename,char *pwd,char *out_file)
- {
- FILE *fp1,*fp2;
- register char ch;
- int j=0;
- int j0=0;
- fp1=fopen(in_filename,"r");/*打开要加密的文件*/
- if(fp1==NULL){
- printf("cannot open in-file./n");
- exit(1);/*如果不能打开要加密的文件,便退出程序*/
- }
- fp2=fopen(out_file,"w");
- if(fp2==NULL){
- printf("cannot open or create out-file./n");
- exit(1);/*如果不能建立加密后的文件,便退出*/
- }
- while(pwd[++j0]);
- ch=fgetc(fp1);
- /*加密算法开始*/
- while(!feof(fp1)){
- if(j0 >7)
- j0 = 0;
- ch += pwd[j0++];
- fputc(ch,fp2);
- ch=fgetc(fp1);
- }
- fclose(fp1);/*关闭源文件*/
- fclose(fp2);/*关闭目标文件*/
- }
- /*解密子函数开始*/
- void decryptfile(char *in_filename,char *pwd,char *out_file)
- {
- FILE *fp1,*fp2;
- register char ch;
- int j=0;
- int j0=0;
- fp1=fopen(in_filename,"r");/*打开要解密的文件*/
- if(fp1==NULL){
- printf("cannot open in-file./n");
- exit(1);/*如果不能打开要解密的文件,便退出程序*/
- }
- fp2=fopen(out_file,"w");
- if(fp2==NULL){
- printf("cannot open or create out-file./n");
- exit(1);/*如果不能建立解密后的文件,便退出*/
- }
- while(pwd[++j0]);
- ch=fgetc(fp1);
- /*解密算法开始*/
- while(!feof(fp1)){
- if(j0 >7)
- j0 = 0;
- ch -= pwd[j0++];
- fputc(ch,fp2);/*我的解密算法*/
- ch=fgetc(fp1);
- }
- fclose(fp1);/*关闭源文件*/
- fclose(fp2);/*关闭目标文件*/
- }
http://blog.csdn.net/educast/article/details/38728325
0 0
- C++ 简单的文件加密和解密 实例
- C++ 简单的文件加密和解密 实例
- C++ 简单的文件加密和解密 实例
- C++ 简单的文件加密和解密 实例
- C++ 简单的文件加密和解密 实例
- 简单的加密解密文件
- 简单的文件加密解密
- C语言实现简单文件加密解密
- 用C写的 简单字符串加密和解密算法
- 使用异或做的简单文件加密和解密
- 一个简单的加密解密方法实例
- 文件的加密和解密
- 简单文件加密/解密
- c/c++最简单的加密解密
- 简单的class文件加密解密
- JavaIO ------简单的文件加密解密
- 文件的简单加密与解密(不安全)
- 3DES加密和解密的实例
- 安卓JNI--Android studio 1.5 JNI开发初探
- spring源码解析-Webmvc
- 【Android实战】HorizontalScrollView实现可滑动GridView
- QPainter::begin: Paint device returned engine == 0, type: 1
- 八种排序算法总结
- C++ 简单的文件加密和解密 实例
- impala初期使用零碎记录
- ubuntu 15.04 keepalived-安装
- 快速高斯模糊算法
- 解决JAVA环境变量配置javac不可用问题
- isAssignableFrom与instanceof的区别
- centos rsync 实践
- C++矩阵处理工具Eigen类浅析
- Linux设备驱动模型二 kobject