想利用ASCII码偏移的方法给一个txt文件加密,但是能力有限,没想出来,想参考大家的做法。
下面是一个实现,供参考:
#include <stdio.h>
//编码加密
void encode(char * path,char *outpath){
FILE * fp = fopen(path,"r");
if(fp==NULL){
printf("打开源文件失败!\n");
return ;
}
FILE * outfp= fopen(outpath,"w");
if(outfp==NULL){
printf("打开加密文件失败!\n");
return ;
}
char str[512]; //默认文件最多512个ASCII码
int i=0;
printf("%s源文件的内容为:\n",path);
while(feof(fp)==0){ //如果文件没有结束
fscanf(fp,"%c",&str[i]); //从源文件读取一个字符
printf("%c",str[i]); //打印源文件的内容
fprintf(outfp,"%c",str[i]+25);//文件ASCII码加25进行简单加密
i++; //存入str数组下一个字符位置
}
//关闭源文件和加密文件
fclose (fp);
fclose(outfp);
}
//解密
void decode(char * outpath){
FILE * outfp= fopen(outpath,"r");
if(outfp==NULL){
printf("打开加密文件失败!\n");
return ;
}
printf("\n%s文件的解密后的内容如下:\n",outpath);
int i=0;
char str[512];
while(feof(outfp)==0){
fscanf(outfp,"%c",&str[i]); //读取一个字符从加密文件
printf("%c",str[i]-25); //打印解密后的文字
i++;
}
fclose(outfp);
}
int main(void){
encode("source20220517.txt","source20220517jiami.txt");
decode("source20220517jiami.txt");
}
在编译好的exe目录新建两个文件:一个是source20220517.txt为要加密的文件,一个source20220517jiami.txt存放加密后的文件
测试source20220517.txt的内容如下:
北京上海广州经济发达!
运行结果:
若是加密,一是对文件名进行加密,即ASCII值的特定加减,二,若是对内容加密,可以采取特定运算及函数方法得出内容再存入文件,如果内容只是一些数字字母,则可以直接进行值的加减