admin管理员组文章数量:1639836
一个简单的文件加密和解密程序
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);
//获取加密password
printf("请输入密码:");
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);
//获取加密password
printf("请输入密码:");
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!!!
版权声明:本文标题:(C语言)简单的文件加密和解密程序 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729293629a1194460.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论