weixin_52956928 2021-11-11 10:50 采纳率: 100%
浏览 136
已结题

救救孩子 可以解决一个问题吗😭

流式加密
输入一个任意长度可见字符串组成的字符串,并随机生成一个等长度的随机密钥并保存在文件中,采用按位异或的方式进行二进制加密,并将该加密结果保存在一个文件中,解密时导入该密文和密钥进行解密,将解密结果进行输出。

  • 写回答

1条回答 默认 最新

  • 关注

    代码如下,如有帮助,请帮忙采纳一下,谢谢。

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        char mw[100]={0},my[100]={0},jmp[100]={0},jmn[100]={0};
        int i,j,n;
        FILE* fp;
        srand((unsigned int)time(NULL));
        printf("请输入明文:");
        gets(mw); //读取明文
        i=0;
        while(mw[i])
        {
            n = 33+ rand()%80; //生成0-79的随机数,密钥使用可见字符部分的字符
            my[i] = n;
    
            //加密后的字符
            jmp[i] = mw[i] ^ my[i];
            i++;
        }
    
        printf("密钥字符:%s\n",my);
        printf("加密后字符:%s\n",jmp);
        if((fp= fopen("my.in","wb")) == 0)
        {
            printf("文件打开错误\n");
            return 0;
        }
        //密钥和加密后的内容写入文件
        my[i] = '\n';
        fwrite(my,1,i+1,fp);
        fwrite(jmp,1,i,fp);
        fclose(fp);
    
        //打开文件读取
        fp = 0;
        fp=fopen("my.in","rb");
        if(fp == 0)
        {
            printf("文件打开失败");
            return 0;
        }
        memset(my,0,100);
        memset(jmp,0,100);
        fgets(my,100,fp);
        fgets(jmp,100,fp);
        fclose(fp);
        n = strlen(my);
        if(my[n-1] == '\n') my[n-1] = 0;
        printf("读取的密钥字符:%s\n",my);
        printf("读取的加密后字符:%s\n",jmp);
        //解密
        i=0;
        while(my[i])
        {
            jmn[i] = my[i] ^ jmp[i]; 
            i++;
        }
    
        printf("解密后字符:%s\n",jmn);
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 已采纳回答 11月16日
  • 创建了问题 11月11日

悬赏问题

  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析