同样的一代码,在VC6中可以使用,在VS.net2005中出错。。。。。。。MD5String函数
怀柔老纪 2008-02-28 03:11:48 char* MD5String( char *string )
{
MD5_CTX context;
unsigned char digest[16];
char output1[33];
static char output[33]={""};
unsigned int len = strlen (string);
int i;
MD5Init( &context);
MD5Update( &context, (unsigned char*)string, len );
MD5Final( digest, &context );
for (i = 0; i < 16; i++)
{
sprintf(&(output1[2*i]),"%02x",(unsigned char)digest[i]);
sprintf(&(output1[2*i+1]),"%02x",(unsigned char)(digest[i]<<4));
}
for(i=0;i<32;i++)
{
output[i]=output1[i];
}
return output; //这里出错,在VC6中不出错,在VS.net2005中的C++中出错,提示是:Run-Time Check Failure #2 - Stack around the variable 'output1' was corrupted
}
我所用的调用这个函数的代码是:
UpdateData(TRUE);
CString mTmp;
char* pTmp;
pTmp = MD5String((char *)(LPCTSTR)m_inStr); //m_inStr 是输入Edit控件Value变量
m_outStr = (CString)pTmp;//m_outStr是输出Edit控件的Value变量
UpdateData(FALSE);