首页
社区
课程
招聘
DES算法时,在置换函数中,由bit转为B时出现问题,想不通。
发表于: 2020-4-10 18:49 2565

DES算法时,在置换函数中,由bit转为B时出现问题,想不通。

2020-4-10 18:49
2565
求助大佬:主要想不通在由bit转成字节时出现的问题。

void Initial_Permutation_(bool* left,bool* right,char* result)//进行逆置换,并且转为字节的形式
{
int i=0;
bool temp[64];
memset(result,0,8);//对result进行初始化
memcpy(temp,left,32);
memcpy(temp+32,right,32);//将64位合并起来
/*for(i=0;i<64;i++)
{
result[i/8]|=temp[IP_[i]-1]<<(i%8);
}*/
for(i=0;i<32;i++)
result[i/8]|=temp[IP_[i]-1]<<(i%8);
for(;i<64;i++)
{
printf("i=%d\n",i%8);
printf("%d\n",result[i/8]);
printf("%d\n",(char)temp[IP_[i]-1]);
result[i/8]|=(char)(temp[IP_[i]-1])<<(i%8);
}

}//left和right都是bool类型的数组

打注释的地方是之前的代码,后来找问题分开了,发现i>32时数据就开始出错了。调试如图:
在此数据和与其一样。
到下面就不行了:

上面为零还正常,下面预期应该是2,怎么变成temp[temp[IP_[i]-1]]=1,temp[IP_[i]-1]<<1位应该是2,怎么变成-52了呢?i<32之前这都是正常的。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 704
活跃值: (3360)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
2
建议把完整程序发上来
2020-4-10 21:54
0
游客
登录 | 注册 方可回帖
返回
//