流式加密
输入一个任意长度可见字符串组成的字符串,并随机生成一个等长度的随机密钥并保存在文件中,采用按位异或的方式进行二进制加密,并将该加密结果保存在一个文件中,解密时导入该密文和密钥进行解密,将解密结果进行输出。
救救孩子 可以解决一个问题吗😭
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 技术专家团-小桥流水 2021-11-11 11:36关注
代码如下,如有帮助,请帮忙采纳一下,谢谢。
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 python爬取bilibili校园招聘网站
- ¥30 求解达问题(有红包)
- ¥15 请解包一个pak文件
- ¥15 不同系统编译兼容问题
- ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
- ¥30 数字电源对DSP芯片的具体要求
- ¥20 antv g6 折线边如何变为钝角
- ¥30 如何在Matlab或Python中 设置饼图的高度
- ¥15 nginx中的CORS策略应该如何配置
- ¥30 信号与系统实验:采样定理分析