一次性密码本问题,请各位大佬帮帮忙,想知道为什么会有两个错误,应该怎么解决?

#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>//字节转换成8比特字符串int... #include <stdio.h>#include <stdlib.h>#include<time.h>#include<string.h>//字节转换成8比特字符串int ByteToBit(char ch, char bit[8]) { for (int cnt = 0; cnt < 8; cnt++) { bit[cnt] = (ch >> cnt) & 1;//将ch的二进制值保存在bit数组 } //比如我们求一个十进制数的二进制,不停除以2 return 0;}char GenerateRandom() { return rand() % 2;}//产生一次性密钥void GenerateKey(char *p, int len) { srand(time(0)); for (int i = 0; i < len; i++) { p[i] = GenerateRandom(); printf("%d",p[i]); } printf("\n");}//异或操作,将结果保存在p里面void XOR(char *p, char *q, int len) { printf("========================================================\n"); for (int i = 0; i < len; i++) { p[i] = p[i] ^ q[i]; printf("%d",p[i]); } printf("\n");}//字节转换成8比特字符串int ByteToBit(char ch, char bit[8]) { for (int cnt = 0; cnt < 8; cnt++) { bit[7 - cnt] = (ch >> cnt) & 1;//将ch的二进制值保存在bit数组 } return 0;}void OneTimeAlgorithm() { int index = -1; while (index != 0) { char plain[100] = {0x0}; printf("请输入需要加密的明文:"); gets(plain);//存放明文 int len = strlen(plain);//获取实际明文长度 int bitlen = sizeof(char) * 8 * len;//二进制字符串长度 char *p = (char *) malloc(bitlen); char *key = (char *) malloc(bitlen); for (int i = 0; i < len; i++) { ByteToBit(plain[i], p + i * 8); } for(int i=0;i<bitlen;i++){ printf("%d",p[i]); } printf("\n"); GenerateKey(key,bitlen); XOR(p,key,bitlen); }} 展开
 我来答
百度网友e88eac6
2020-04-22 · TA获得超过2274个赞
知道小有建树答主
回答量:413
采纳率:73%
帮助的人:206万
展开全部
第一个错误是因为 函数 ByteToBit() 前后定义了两次,应去掉其中一个。
第二个错误是因为 函数 OneTimeAlgorithm() 中两个for循环中使用的 i 重复定义了,去掉其中一个的定义即可,一般不要在for循环中定义变量。
暨阳煦Ok
2020-04-22 · TA获得超过1713个赞
知道小有建树答主
回答量:9747
采纳率:58%
帮助的人:469万
展开全部
一次性迷迷本儿的问题,请各位大佬帮帮忙,想知道为什么?有两个错误应该怎么解决?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式