文件加密器

需先创建源文件;

---------------------------------------------------------------------------------------------------------------------------------

fun.c文件内容

#include<stdio.h>
#include<stdlib.h>
void print_help(void)
{
	printf("***********1:加密文件******************\n");
	printf("***********2:解密文件******************\n");
	printf("***********3:退出程序******************\n");
}




void get_file_name(char *dest_file_name,char *src_file_name)
{
	printf("请输入你的源文件名称(30个字符):");
	scanf("%s",src_file_name);
	printf("请输入你的目的文件名称(30个字符):");
	scanf("%s",dest_file_name);
	return;
}//输入源文件和目的文件名;




char *read_src_file(unsigned long *file_length,char *src_file)
{
	FILE *fp=NULL;
	char *data=NULL;
	fp=fopen(src_file,"r");
	if(fp==NULL)
	{
		perror("fp");
		return NULL;
	}
	fseek(fp,0,2);
	*file_length=ftell(fp);
	rewind(fp);
	data=(char *)calloc(1,*file_length);
	if(data==NULL)
	{
		perror("data");
		return NULL;
	}
	fread(data,*file_length,1,fp);
	fclose(fp);
	return data;
}//读取源文件内容,读取到字符数组里;




char *file_text_encrypt(char *src_file_text,unsigned long length,unsigned int password)
{
	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 length,char *file_name)
{
	FILE *fp=NULL;
	fp=fopen(file_name,"w");
	if(fp==NULL)
	{
		perror("fp");
		return;
	}
	fwrite(text,length,1,fp);
	fclose(fp);
	if(text!=NULL)
	{
		text=NULL;
	}
	printf("保存成功\n");
	fclose(fp);	
}//将字符数组写入目的文件里;




char *file_text_dncrypt(char *src_file_text,unsigned long length,unsigned int password)
{
	int i=0;
	for(i=0;i<length;i++)
	{
		src_file_text[i]-=password;
	}
	return src_file_text;
}//解密

加密全过程和解密全过程函数一样,只是函数加密和解密函数有一点.


fun.h文件内容

extern void print_help(void);
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);
extern char *file_text_encrypt(char *src_file_text,unsigned long length,unsigned int password);
extern void save_file(char *text,unsigned long length,char *file_name);
extern char *file_text_dncrypt(char *src_file_text,unsigned long length,unsigned int password);

main.c文件内容

#include<stdio.h>
#include<stdlib.h>
#include"fun.h"
int main()
{
	while(1)
	{
	int cmd=0; 
	print_help();
	scanf("%d",&cmd);
	if(cmd==1)
	{
		FILE *fp=NULL;
		char src_file[64]="";
		char dst_file[64]="";
		char arr[1100]="";
		scanf("%s",arr);
		unsigned long file_length = 0;
		unsigned int password=0;
		char *file_data=NULL;

		get_file_name(dst_file,src_file);

		fp=fopen(src_file,"w");
		fputs(arr,fp);
		fclose(fp);

		file_data = read_src_file(&file_length,src_file);

		printf("请输入你的密码:");
		scanf("%u",&password);

		file_data=file_text_encrypt(file_data,file_length,password);

		save_file(file_data,file_length,dst_file);

		fp=fopen(src_file,"w");
		fputs("你也想知道不可能这是秘密",fp);
		fclose(fp);
	}
	else if(cmd==2)
	{
		char src_file[64]="";
		char dst_file[64]="";
		unsigned long file_length = 0;
		unsigned int password=0;
		char *file_data=NULL;

		get_file_name(dst_file,src_file);

		file_data = read_src_file(&file_length,src_file);

		printf("请输入你的密码:");
		scanf("%u",&password);

		file_data=file_text_dncrypt(file_data,file_length,password);

		save_file(file_data,file_length,dst_file);
	}
	else if(cmd==3)
	{
		return;
	}
	else
	{
		printf("--请输入一个正确的选项--\n");	
	} 
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值