2 回答
TA贡献1906条经验 获得超3个赞
void *memcpy(void *dest, const void *src, size_t n);
由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。
一般的,在32位编译环境中,sizeof(int)=4。
所以你的第三个参数32肯定是不对的
TA贡献1827条经验 获得超9个赞
extern void DES_EncryptBlock(char plainBlock[8],int subkeys[16][48],char cipherBlock[8])
{
int plainbit[64]={0};
int copyright[48]={0};
int cnt;
Char8tobit64(plainBlock,plainbit);
IP_transform(plainbit);
//16轮迭代
for(cnt=0;cnt<16;cnt++)
{
memcpy(copyright,plainbit+32,32*sizeof(int));
E_transform(copyright);
DES_OR(copyright,subkeys[cnt],48);
DES_SBOX(copyright);
P_transform(copyright);
DES_OR(plainbit,copyright,32);
if(cnt!=15)
{
swap(plainbit,plainbit+32);
}
IP_1_transform(plainbit);
Bit64tochar8(plainbit,cipherBlock);
}
memcpy(copyright,plainbit+32,32*sizeof(int));int copyright[48]={0};
因为最后的长度是32*sizeof(int)不是32
添加回答
举报
