admin管理员组文章数量:1613384
最近在B站学了一个小技巧,写一个小程序来将自己的文件进行加密,这篇文章就用C语言来分享给大家。
首先我们知道,不管是什么文件,对电脑来说都只是一推0101的二进制数,既然这样,我们是不是可以将里面的二进制数读出来,然后按照一定的算法来让它变成别的乱码,这样当你打开的文件的时候就会识别不了了。如果想要重新打开文件,只需要按照算法把它还原回去就可以了。
接下来让我们来实现一下吧!!
首先我们先打开一个文件:
char filename[256] = ""; //文件路径的字符串
FILE *fp = NULL;
printf("请输入要加密/解密的文件路径:\n");
gets(filename);
if((fp = fopen(filename, "rb")) == NULL)//判断文件是否存在
{
printf("路径不正确!\n");
exit(0);
}
然后我们给他一个密码:
char password[12] = "123456"; //存放密码的指针,最长为12位
printf("文件存在,请输入密码:\n");
scanf("%s", password);
pwdlen = (int)strlen(password); //记录密码的长度
if(0 == pwdlen) //判断密码长度是否为零
{
printf("sorry,密码长度不能为零\n");
exit(1);
}
然后就是把打开的文件一个字符一个字符的读出来,再逐一进行加密,然后存进一个临时文件,这里的加密算法可以根据自己来定,想怎么玩就怎么玩,但是要知道还原回去的算法哦,不然文件就.........
FILE *fptemp = NULL;
const char tempfile[256] = "temp1234567890.temp";
int i = 0;
char ch = '0';
fptemp = fopen(tempfile, "wb"); //创建一个临时文件,将加密后的字符存进去
while(1)
{
ch = fgetc(fp);
if(feof(fp)) //如果文件读出来完了,就结束加密
{
break;
}
ch^=password[i++]; //加密算法,这里用按位异或
fputc(ch, fptemp); //加密内容存到临时文件中
if(i == pwdlen) //密码用完了就循环使用
{
i = 0;
}
}
最后一步就是将原文件删掉,再将加密后的临时文件名称改成原文件的名称就可以啦。
fclose(fp);
fclose(fptemp);
remove(filename);
rename(tempfile, filename);
printf("恭喜你加密成功\n");
这样就大功告成啦,小伙伴们注意哦,因为这里用的是加密算法只是异或,所以解密的话只需要再对文件执行一个这个程序,输入加密一样的密码就可以啦。
但是如果你的加密算法是不可逆的话,你就要重新设计一个解密的程序咯。
我们来看看效果:
这是一张图片:
给它进行加密:
然后打开就会变成这样:
下面附上源码(这段代码并不是我自己写的,只是从B站上学的时候抄下来的,最近再学网络安全,大家一起加油吧):
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
/*打开一个文件或者目录*/
char filename[256] = ""; //文件路径的字符串
FILE *fp = NULL;
FILE *fptemp = NULL;
char password[12] = "123456";
const char tempfile[256] = "temp1234567890.temp";
int pwdlen = 0;
int i = 0;
char ch = '0';
void menu();
void inputpass(char* pass);
void menu()
{
printf("*******************************\n");
printf("**********加密小程序***********\n");
printf("*******************************\n");
printf("请输入要加密/解密的文件路径:\n");
gets(filename);
if((fp = fopen(filename, "rb")) == NULL)
{
printf("路径不正确!\n");
exit(0);
}
printf("文件存在,请输入密码:\n");
scanf("%s", password);
pwdlen = (int)strlen(password);
if(0 == pwdlen)
{
printf("sorry,密码长度不能为零\n");
exit(1);
}
fptemp = fopen(tempfile, "wb");
while(1)
{
ch = fgetc(fp);
if(feof(fp))
{
break;
}
ch^=password[i++];
fputc(ch, fptemp);
if(i == pwdlen)
{
i = 0;
}
}
fclose(fp);
fclose(fptemp);
remove(filename);
rename(tempfile, filename);
printf("恭喜你加密成功\n");
}
void inputpass(char* pass)
{
scanf("%s", pass);
}
int main()
{
menu();
return 0;
}
版权声明:本文标题:如何将自己的文件进行加密?一个小程序的教你搞定 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728653510a1168011.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论