文件加密一例

给文件加密的技术很多,其中又分为不同等级,以适合不同场合的需要.这里给出最简单的文件加密技术,即采用文件逐字节与密码异或方式对文件进行加密,当解密时,只需再运行一遍加密程序即可.

下面是一个实例程序,能对任意一个文件进行加密,密码要求用户输入,限8位以内(当然你可以再更改).程序有很好的容错设计,这是我们应该学习的.

/* Turbo 2.0 pass. give file a password! */

#include

 1<stdio.h>   
 2#include<stdlib.h>   
 3#include<conio.h>   
 4#include<string.h>
 5
 6void dofile(char *in_fname,char *pwd,char *out_fname);/*对文件进行加密的具体函数*/ 
 7
 8void main(int argc,char *argv[])/*定义main()函数的命令行参数*/   
 9{   
10char in_fname[30];/*用户输入的要加密的文件名*/   
11char out_fname[30];   
12char pwd[8];/*用来保存密码*/ 
13
14if(argc!=4){/*容错处理*/   
15printf("\nIn-fname:\n");   
16gets(in_fname);/*得到要加密的文件名*/ 
17
18printf("Password:\n");   
19gets(pwd);/*得到密码*/ 
20
21printf("Out-file:\n");   
22gets(out_fname);/*得到加密后你要的文件名*/ 
23
24  
25dofile(in_fname,pwd,out_fname);   
26}   
27else{/*如果命令行参数正确,便直接运行程序*/   
28strcpy(in_fname,argv[1]);   
29strcpy(pwd,argv[2]);   
30strcpy(out_fname,argv[3]);   
31dofile(in_fname,pwd,out_fname);   
32} 
33
34} 
35
36  
37/*加密子函数开始*/   
38void dofile(char *in_fname,char *pwd,char *out_file)   
39{   
40FILE *fp1,*fp2;   
41register char ch;   
42int j=0;   
43int j0=0; 
44
45fp1=fopen(in_fname,"rb");   
46if(fp1==NULL){   
47printf("cannot open in-file.\n");   
48exit(1);/*如果不能打开要加密的文件,便退出程序*/   
49}   
50fp2=fopen(out_file,"wb");   
51if(fp2==NULL){   
52printf("cannot open or create out-file.\n");   
53exit(1);/*如果不能建立加密后的文件,便退出*/   
54}   
55while(pwd[++j0]);   
56ch=fgetc(fp1); 
57
58/*加密算法开始*/   
59while(!feof(fp1)){   
60fputc(ch^pwd[j&gt;=j0?j=0:j++],fp2);/*异或后写入fp2文件*/   
61ch=fgetc(fp1);   
62}   
63fclose(fp1);/*关闭源文件*/   
64fclose(fp2);/*关闭目标文件*/   
65} 
66
67/*程序结束*/</string.h></conio.h></stdlib.h></stdio.h>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus