DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
编写了一个Code函数,用来简单的XOR加密和解密:
CString CLOGINDlg::Code(CString str, int i)
{
char* p=str.GetBuffer(str.GetLength()+1);
str.ReleaseBuffer();
for(int j=0;j<=str.GetLength();j++)
{
*p=(*p)^i;
//q++;
p++;
}
return str;}对 LPTSTR lpReturnedString 例如对"admin"加密Code("admin",10)得到{"kncd
"}这是一个错误的结果,(我在调试中查看到的,结果和{"kncd"}不同)然后再解码时就更错了。请问这个问题怎么解决
"(换了一行是嘛意思,我调试窗口查看变量时看到就这样),对前者的结果再Code一次就解码了,而对后者再Code一次却解密错误,本人愚笨,实在不懂为什么
//读取配置文件中的登录信息,准备验证登录
::GetPrivateProfileString("Login Information","user",Code("admin",10),userbuff.GetBuffer(MAX_PATH),MAX_PATH,".\\login.db");
::GetPrivateProfileString("Login Information","password",Code("demo",10),pswbuff.GetBuffer(MAX_PATH),MAX_PATH,".\\login.db");
if(!(strcmp(m_password,Code(pswbuff,10))||strcmp(m_user,Code(userbuff,10))))
{
......
}
这样行的通不?结果是都不匹配。