CisyamPlanA 2022-05-17 16:49 采纳率: 69.2%
浏览 50
已结题

如何用ASCII码加密文件

想利用ASCII码偏移的方法给一个txt文件加密,但是能力有限,没想出来,想参考大家的做法。

  • 写回答

2条回答 默认 最新

  • a5156520 2022-05-17 17:22
    关注

    下面是一个实现,供参考:

    
    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月29日
  • 已采纳回答 5月29日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?