C++Builder6.0中使用memcpy遇到奇怪的问题

stefanie2523 2013-06-01 12:09:55
void AES::Cipher( BYTE* input, BYTE* output,int len)
{
output=new BYTE[len];
BYTE sinput[16];
BYTE soutput[16];
for(int i=0;i<len/16;i++)
{
memcpy(sinput,input+i*16,16);
Cipher(sinput,soutput);
memcpy(output+i*16,soutput,16);
}
ShowMessage("!");
if(len%16!=0)
{
memcpy(sinput,input+16*(len/16),len%16);

for(int i=len%16;i<(16-len%16);i++)
{
sinput[i]=0x00;
Cipher(sinput,soutput);

}
memcpy(output+16*(len/16),soutput,16);
}

}


我传进去的input大小等于len,如len=352;前面的i<11之前的memcpy(output+i*16,soutput,16);都好好的,output大小一直是300多,到i=11的时候突然刷成160!!这是为什么?
...全文
184 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
庄鱼 2013-06-02
  • 打赏
  • 举报
回复
void AES::Cipher( BYTE* input, BYTE* *output,int len)//------------ { *output = new BYTE[len];//------------ ...
stefanie2523 2013-06-01
  • 打赏
  • 举报
回复
最后只能用文件的方式了。。
stefanie2523 2013-06-01
  • 打赏
  • 举报
回复
引用 1 楼 FreeFice 的回复:
void AES::Cipher( BYTE* input, BYTE* output,int len)
{
 output=new BYTE[len];   //------------??有效吗?外面能读取吗?
     BYTE sinput[16];
     BYTE soutput[16];
     for(int i=0;i<len/16;i++)
     {
       memcpy(sinput,input+i*16,16);
       Cipher(sinput,soutput);
       memcpy(output+i*16,soutput,16);
     }
     ShowMessage("!");
     if(len%16!=0)
     {
     memcpy(sinput,input+16*(len/16),len%16);

     for(int i=len%16;i<(16-len%16);i++)
     {
       sinput[i]=0x00;
       Cipher(sinput,soutput);

     }
      memcpy(output+16*(len/16),soutput,16);
     }

}
源代码中那行注释掉了,,有没有那个都一样,还是不行的
stefanie2523 2013-06-01
  • 打赏
  • 举报
回复
哦,那个我在源代码中注释掉了。。我外面有定义的
庄鱼 2013-06-01
  • 打赏
  • 举报
回复
void AES::Cipher( BYTE* input, BYTE* output,int len)
{
 output=new BYTE[len];   //------------??有效吗?外面能读取吗?
     BYTE sinput[16];
     BYTE soutput[16];
     for(int i=0;i<len/16;i++)
     {
       memcpy(sinput,input+i*16,16);
       Cipher(sinput,soutput);
       memcpy(output+i*16,soutput,16);
     }
     ShowMessage("!");
     if(len%16!=0)
     {
     memcpy(sinput,input+16*(len/16),len%16);

     for(int i=len%16;i<(16-len%16);i++)
     {
       sinput[i]=0x00;
       Cipher(sinput,soutput);

     }
      memcpy(output+16*(len/16),soutput,16);
     }

}

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧