C++Builder6.0中使用memcpy遇到奇怪的问题
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);
}
}
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);
}
}