如何用ASCII码加密文件

想利用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的内容如下:


北京上海广州经济发达!

运行结果:

img

若是加密,一是对文件名进行加密,即ASCII值的特定加减,二,若是对内容加密,可以采取特定运算及函数方法得出内容再存入文件,如果内容只是一些数字字母,则可以直接进行值的加减