void CDejobDlg::OnOK()
{ UpdateData(TRUE); int buf2[512],tcd,tcd1,*p1,i;
CFile cfile1;
char*pfilename=new char[512];
strcpy(pfilename, (LPCSTR)m_chrFile);
cfile1.Open(pfilename,CFile::modeReadWrite);
cfile1.Read(buf2,32);
p1=(int*)buf2;
p1=p1+1;
tcd=*p1;
tcd1=(tcd-1)/2;
cfile1.SeekToBegin();
cfile1.Read(buf2,tcd);
buf2[0]=buf2[0]+0x0017;
for(i=16;i<tcd1;i++) buf2[i]=buf2[i]^0xffff;
cfile1.SeekToBegin();
cfile1.Write(buf2,tcd);
cfile1.Flush();
cfile1.Close();
if (CanExit())
CDialog::OnOK();
}void CDejobDlg::OnYes()
{
if(m_chrPsn=="qilinyi" && m_chrPsw=="8300302"){
int buf2[512],tcd,tcd1,*p1,i; CFile cfile1; char*pfilename=new char[512];
strcpy(pfilename, (LPCSTR)m_chrFile);
cfile1.Open(pfilename,CFile::modeReadWrite);
cfile1.Read(buf2,32);
p1=(int*)buf2;
p1=p1+1;
tcd=*p1;
tcd1=(tcd-1)/2;
cfile1.SeekToBegin();
cfile1.Read(buf2,tcd);
buf2[0]=buf2[0]-0x0017;
for(i=16;i<tcd1;i++) buf2[i]=buf2[i]^0xffff;;
cfile1.SeekToBegin();
cfile1.Write(buf2,tcd);
cfile1.Flush();
cfile1.Close();}
else {
AfxMessageBox("无权打开文件");
return;
x++;
if (x>=3) {DeleteFile(m_chrFile);
AfxMessageBox("文件被销毁");
return;
exit(1);}
else CDejobDlg::OnYes();
// TODO: Add your control notification handler code here
}
}
这是一个加密控件和一个解密控件的代码 我在加密是程序报错~
谁能帮我看下是什么问题~
我是个菜鸟请各位大侠以后多帮忙
{ UpdateData(TRUE); int buf2[512],tcd,tcd1,*p1,i;
CFile cfile1;
char*pfilename=new char[512];
strcpy(pfilename, (LPCSTR)m_chrFile);
cfile1.Open(pfilename,CFile::modeReadWrite);
cfile1.Read(buf2,32);
p1=(int*)buf2;
p1=p1+1;
tcd=*p1;
tcd1=(tcd-1)/2;
cfile1.SeekToBegin();
cfile1.Read(buf2,tcd);
buf2[0]=buf2[0]+0x0017;
for(i=16;i<tcd1;i++) buf2[i]=buf2[i]^0xffff;
cfile1.SeekToBegin();
cfile1.Write(buf2,tcd);
cfile1.Flush();
cfile1.Close();
if (CanExit())
CDialog::OnOK();
}void CDejobDlg::OnYes()
{
if(m_chrPsn=="qilinyi" && m_chrPsw=="8300302"){
int buf2[512],tcd,tcd1,*p1,i; CFile cfile1; char*pfilename=new char[512];
strcpy(pfilename, (LPCSTR)m_chrFile);
cfile1.Open(pfilename,CFile::modeReadWrite);
cfile1.Read(buf2,32);
p1=(int*)buf2;
p1=p1+1;
tcd=*p1;
tcd1=(tcd-1)/2;
cfile1.SeekToBegin();
cfile1.Read(buf2,tcd);
buf2[0]=buf2[0]-0x0017;
for(i=16;i<tcd1;i++) buf2[i]=buf2[i]^0xffff;;
cfile1.SeekToBegin();
cfile1.Write(buf2,tcd);
cfile1.Flush();
cfile1.Close();}
else {
AfxMessageBox("无权打开文件");
return;
x++;
if (x>=3) {DeleteFile(m_chrFile);
AfxMessageBox("文件被销毁");
return;
exit(1);}
else CDejobDlg::OnYes();
// TODO: Add your control notification handler code here
}
}
这是一个加密控件和一个解密控件的代码 我在加密是程序报错~
谁能帮我看下是什么问题~
我是个菜鸟请各位大侠以后多帮忙
解决方案 »
- 一个控件类如何获取父窗口的点击事件,鼠标点击不在控件上?
- C++简单问题,while(*s),,*s指针怎么作为判断条件的??谢谢
- CATCH_ALL中的ASSERT
- ATL:: CATLRegExp和boost::Regex相比,哪个更强大,哪个对正则标准支持更好?
- vc与游戏开发
- 文件对话框,如何让FileFilter当中的第二项成为默认的文件类型?
- 向系统菜单添加一个菜单项(OnHelp2)后,咋不响应消息处理函数?
- 明天去<<杭州hexin核新软件>>笔试,大家给点意见
- 请教,vs2010的EXE调用VC6的Dll报AFXWIN1.inl第22行错,查了是函数AfxGetResourceHandle为NULL,
- !!!!!!用File Mapping处理大文件的问题!!!!!!
- 关于自动运行的问题?
- 请教高手,为何将formview放在对话框上,debug正常,release版本却会出错???!!!
File:filecore.cpp
Line:220For information on how your program can cause an assertion
filelure, see the Visul C++ documentation on asserts(Press Retry to debug the application)
检查一下指针等是否正确操作
或者你这么写:
CFileException ex; if (!cfile1.Open(pfilename,CFile::modeReadWrite, &ex))
{ TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
MessageBox(szError);
return;
}
看看打出来什么。
p1=(int*)buf2;
p1=p1+1;
tcd=*p1;
tcd1=(tcd-1)/2;
你那个tcd的值是什么?
tcd=*p1;这个p1本身就不知道是什么,这么取岂不是很危险。
加密算法的说明也给我。
[email protected]
从文件里读出开头4个字节的内容,然后以这四个字节+1的值作为地址,把该地址的内容再给tcd。
这一步就不合理,这个地址是什么都不知道,不能这么写的。
是不是你把程序弄错了?
{ UpdateData(TRUE);
CFile cfile1;
if(!cfile1.Open(m_chrFile,CFile::modeReadWrite))
{
return;
}
int length = cfile1.GetLength();
char *buf = new char[length +1];
if(!buf)
{
cfile1.Close();
return;
}cfile1.Read(buf,length);
for(int i = 0;i<length;i++)
{
*(buf+i) = *(buf+i) ^ 0x32;
}cfile1.SeekToBegin();cfile1.Write(buf,length);cfile1.Flush();cfile1.Close();
delete []buf;
CDialog::OnOK();
}你用这个代码吧,简单加密,解密过程和加密一样的。