C++给文件加密技术如此简单
2015-08-16 18:26
961 查看
C++语言(www.tarenasz.com)最简单的文件加密技术,即采用文件逐字节与密码异或方式对文件进行加密,当解密时,只需再运行一遍加密程序即可。
下面是一个实例程序,能对任意一个文件进行加密,密码要求用户输入,限8位以内(当然你可以再更改)。程序有很好的容错设计,这是我们应该学习的。
下面是一个实例程序,能对任意一个文件进行加密,密码要求用户输入,限8位以内(当然你可以再更改)。程序有很好的容错设计,这是我们应该学习的。
/* Turbo 2.0 pass. give file a password! */ #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> void dofile(char *in_fname,char *pwd,char *out_fname);/*对文件进行加密的具体函数*/ void main(int argc,char *argv[])/*定义main()函数的命令行参数*/ { char in_fname[30];/*用户输入的要加密的文件名*/ char out_fname[30]; char pwd[8];/*用来保存密码*/ if(argc!=4){/*容错处理*/ printf("/nIn-fname:/n"); gets(in_fname);/*得到要加密的文件名*/ printf("Password:/n"); gets(pwd);/*得到密码*/ printf("Out-file:/n"); gets(out_fname);/*得到加密后你要的文件名*/ dofile(in_fname,pwd,out_fname); } else{/*如果命令行参数正确,便直接运行程序*/ strcpy(in_fname,argv[1]); strcpy(pwd,argv[2]); strcpy(out_fname,argv[3]); dofile(in_fname,pwd,out_fname); } } /*加密子函数开始*/ void dofile(char *in_fname,char *pwd,char *out_file) { FILE *fp1,*fp2; register char ch; int j=0; int j0=0; fp1=fopen(in_fname,"rb"); if(fp1==NULL){ printf("cannot open in-file./n"); exit(1);/*如果不能打开要加密的文件,便退出程序*/ } fp2=fopen(out_file,"wb"); if(fp2==NULL){ printf("cannot open or create out-file./n"); exit(1);/*如果不能建立加密后的文件,便退出*/ } while(pwd[++j0]); ch=fgetc(fp1); /*加密算法开始*/ while(!feof(fp1)){ fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/ ch=fgetc(fp1); } fclose(fp1);/*关闭源文件*/ fclose(fp2);/*关闭目标文件*/ } /*程序结束*/
相关文章推荐
- C++那些细节--extern关键字&&全局变量定义问题
- 矩阵链乘
- C语言中的sscanf()函数使用详解
- C++基础---char型字符串库函数
- [LeetCode] Clone Graph
- JAVA语言的特点:C++--
- 黑马程序员--oc语言类和对象
- C++ Primer 学习笔记_45_STL实践与分析(19)--建筑常规算法
- C++面试题
- c++ 什么情况使用深拷贝什么情况使用浅拷贝
- C++基础---字符串(char型字符串)
- C++多态和虚函数
- C++命名规则
- C++基础---链表
- 贪心算法的C语言实现与运用详解
- C++基础---指针数组与数组指针
- 【C语言经典实例】-指向结构体的指针变量
- c++ 类的赋值运算符=的重载,以及深拷贝和浅拷贝
- [LeetCode] Palindrome Partitioning
- C++基础---对象数组中delete与delete[]的区别