一个简单的文件加密和解密程序
main.c
#include <stdio.h>#include <stdlib.h>#include "fun.h"int main(int argc ,char *argv[]){while(1){int cmd=0;print_help();printf("请输入指令:");scanf("%d",&cmd);if(cmd==1){char dest_file[31]="";char src_file[31]="";unsigned long file_length=0;char *read=NULL;unsigned int password=0;//从键盘获取源文件和目的文件名字get_file_name(dest_file,src_file);//从文件中读出内容read = read_src_file(&file_length,src_file);//获取加密passwordprintf("请输入密码:");scanf("%u",&password);//字符数组加密read=file_text_encrypt(read,file_length,password);//保存文件save_file(read,file_length,dest_file);}else if (cmd==2){char dest_file[31]="";char src_file[31]="";unsigned long file_length=0;char *read=NULL;unsigned int password=0;//从键盘获取源文件和目的文件名字get_file_name(dest_file,src_file);//从文件中读出内容read = read_src_file(&file_length,src_file);//获取加密passwordprintf("请输入密码:");scanf("%u",&password);//字符数组加密read=file_text_decrypt(read,file_length,password);//保存文件save_file(read,file_length,dest_file);}else if (cmd==3){break;}else{printf("输入指令出错!!!\n");}}return 0;}
fun.c
#include <stdio.h>#include <stdlib.h>void print_help(){printf("********1:加密文件***********\n");printf("********2:解密文件***********\n");printf("********3:退出程序***********\n");}void get_file_name(char * dest_file_name,char * src_file_name){printf("请输入源文件的名称:");scanf("%s",src_file_name);printf("请输入目的文件的名称:");scanf("%s",dest_file_name);return;}char *read_src_file(unsigned long *file_length,char *src_file_name){char *data=NULL;FILE *fp;fp=fopen(src_file_name,"r");//只读的方式打开文件if(fp==NULL){perror("fopen");return NULL;}//流指针go尾部fseek(fp,0,2);//流指针的偏移量*file_length = ftell(fp);//流指针复位rewind(fp);//申请空间保存文件data=(char *)calloc(1,*file_length);if(NULL==data){perror("calloc");return NULL;}//一次性读fread(data,*file_length,1,fp);fclose(fp);return data;}char *file_text_encrypt(char * src_file_text,unsigned long int length,unsigned int password){char *data=NULL;unsigned int i=0;for(i=0;i<length;i++){src_file_text[i] += password;}return src_file_text;}void save_file(char* text,unsigned long int length,char * file_name){char *data=NULL;FILE *fp;fp=fopen(file_name,"w");if(NULL==fp){perror("fp");return;}//写fwrite(text,length,1,fp);fclose(fp);if(text !=NULL){free(text);text =NULL;}return;}char *file_text_decrypt(char * src_file_text,unsigned long int length,unsigned int password){char *data=NULL;unsigned int i=0;for(i=0;i<length;i++){src_file_text[i] -= password;}return src_file_text;}
fun.h
#ifndef __FUN_H__#define __FUN_H__extern void print_help();extern void get_file_name(char * dest_file_name,char * src_file_name);extern char *read_src_file(unsigned long *file_length,char *src_file_name);extern char *file_text_encrypt(char * src_file_text,unsigned long int length,unsigned int password);extern void save_file(char* text,unsigned long int length,char * file_name);extern char *file_text_decrypt(char * src_file_text,unsigned long int length,unsigned int password);#endif
运行查看
结果
OK!!!