自己无聊写出来的小玩意。。加密方式选的正负数变换,很鸡肋的方式但对中文比较友好。。如果要用的话请换掉这个方式
我也不知道还要说什么,还是直接上代码吧
加密部分
void encryption()//对文件的内容进行加密
{
printf(" 请输入要加密的文件名(绝对路径,直接拖进来也可以)\n");
char *filename;
filename=(char*)malloc(sizeof(char) * 100);//给 filename 分配一个 100 大小的动态空间
RESCANF1:
scanf("%s",filename);
FILE *fp;
fp=fopen(filename,"r+b");
while (fp==NULL){
printf(" 该文件不存在!\n");
goto RESCANF1;
}
char read[10000];
fgets(read,10000,fp); //得到了文件中的字符串并存于 read 数组中
//以下是加密算法
int f=1;
for (int i=0;i<strlen(read);i++)
{
read[i]+=f;
f=-f;
}
fclose(fp);
printf(" 加密完成的文件将存于 D 盘的根目录下,名称为 已加密.txt\n");
Sleep(1000);
//以下将加密完成的数组重新写入文件保存
FILE *fp1;
fp1= fopen("D:/已加密.txt","w+b");
fputs(read,fp1);
fclose(fp1);
free(filename);//释放掉堆内存
return;
}
解密部分
void decrypt()//对文件的内容进行解密
{
printf(" 请输入要解密的文件名(绝对路径,直接拖进来也可以)\n");
char *filename;
filename=(char*)malloc(sizeof(char) * 100);//给 filename 分配一个 100 大小的动态空间
RESCANF2:
scanf("%s",filename);
FILE *fp;
fp=fopen(filename,"r+b");
while (fp==NULL){
printf(" 该文件不存在!请重新输入\n");
goto RESCANF2;
}
char read[10000];
fgets(read,10001,fp);//得到了文件中的字符串并存于 read 数组中
//以下是解密算法
int f=-1;
for(int i=0;i<strlen(read);i++)
{
read[i]+=f;
f=-f;
}
fclose(fp);
printf(" 解密完成的文件将存于 D 盘的根目录下,名称为 已解密.txt\n");
//以下将解密完成的数组重新写入文件保存
FILE *fp1;
fp1= fopen("D:/已解密.txt","a+b");
fputs(read,fp1);
fclose(fp1);
free(filename);//释放掉堆内存
return;
}
Comments NOTHING