QQ登录

只需一步,快速开始

上位机MFC实现文件加密解密源代码

[ 复制链接 ]

上位机MFC实现文件加密解压功能

上位机MFC实现文件加密解压功能

例程实现对指定文件或指定文件夹内的全部文件进行加密 与解密功能。
效果如上图。
点击浏览文件夹或文件后,
可以输入加密文件进行加密或解密。
运行例程时,首先要通过密码登录软件

  1. void CSecurityDlg::OnOK()
  2. {
  3.         // TODO: Add extra validation here
  4.         static int cx=0;
  5.         if(UpdateData()==FALSE) return;
  6.         if(m_Password.Compare("wmr")) {
  7.                 if(cx<2) {
  8.                         MessageBox("密码错误,请重新输入 !"," 权限校验 ",MB_ICONWARNING);
  9.                         cx++;
  10.                 } else {
  11.                         MessageBox("密码错误,您无权使用本工具 !"," 权限校验 ",MB_ICONSTOP);
  12.                         CDialog::OnCancel();
  13.                 }
  14.                 return;
  15.         }

  16.         CDialog::OnOK();
  17. }
复制代码
然后才是浏览要加密 的文件
  1. void CLockFileDlg::OnView()
  2. {
  3.         // TODO: Add your control notification handler code here
  4.         if(UpdateData()==FALSE) return;

  5.         CSBDestination sb(m_hWnd,IDS_TITLE);
  6.         sb.SetFlags( BIF_RETURNONLYFSDIRS | BIF_BROWSEINCLUDEFILES /*| BIF_STATUSTEXT */);
  7.         sb.SetInitialSelection(m_FileName);
  8.         if (sb.SelectFolder()) {
  9.                 m_FileName = sb.GetSelectedFolder();
  10.                 UpdateData(FALSE);
  11.                 OnChanged();
  12.         }
  13. }
复制代码
最后才是执行文件的加密

  1. typedef CList<CString,CString> CFileList;

  2. void CLockFileDlg::LockFile(CString DirName,CString FileName,CString Password)
  3. {
  4.         CString FindName,DispName;
  5.         CFileList FileList,DirList;
  6.         FileList.RemoveAll();
  7.         DirList.RemoveAll();

  8.         char CurDir[MAX_PATH];
  9.         GetCurrentDirectory(MAX_PATH,CurDir);
  10.         if(m_isNet || SetCurrentDirectory(DirName)==TRUE) {
  11.                 if(DirName.GetLength()>(MSG_LEN-23)) {
  12.                         DisplayMessage("Process directory ---- ","");
  13.                         DisplayMessage(DirName,NULL);
  14.                 } else DisplayMessage("Process directory ---- ",DirName);
  15.         }
  16.        
  17.         CFileFind Finder;
  18.         BOOL bOK=Finder.FindFile(FileName);
  19.         if(bOK) {
  20.                 while(bOK) {
  21.                         bOK = Finder.FindNextFile();
  22.                         if(Finder.IsDirectory()==FALSE) {
  23.                                 FindName=m_isNet?Finder.GetFilePath():Finder.GetFileName();
  24.                                 FileList.AddTail(FindName);
  25.                                 m_TotalFileNum++;
  26.                         }
  27.                 }
  28.         }
  29.         Finder.Close();
  30.         if(m_SubDirFlg) {
  31.                 if(m_isNet) {
  32.                         if(DirName.GetAt(DirName.GetLength()-1)!='\\') DirName+="\";
  33.                         DirName+="*.*";
  34.                 }
  35.                 bOK=Finder.FindFile(m_isNet?DirName:"*.*");
  36.                 if(bOK) {
  37.                         while(bOK) {
  38.                                 bOK = Finder.FindNextFile();
  39.                                 if(Finder.IsDirectory() && Finder.IsDots()==FALSE) {
  40.                                         FindName=Finder.GetFilePath();
  41.                                         DirList.AddTail(FindName);
  42.                                 }
  43.                         }
  44.                 }
  45.                 Finder.Close();
  46.         }
  47.        
  48.         m_DirNum++;

  49.         HANDLE hFile;
  50.         DWORD dwFileAttr,dwNewAttr;
  51.         POSITION pos=FileList.GetHeadPosition();
  52.         if(FileList.GetCount()==0) DisplayMessage("File not found","");
  53.         else for(int i=0;i<FileList.GetCount();i++) {
  54.                 FindName=FileList.GetNext(pos);
  55.                 GetDispName(DispName,FindName);
  56.                 DisplayMessage(DispName,NULL);
  57.                 if((dwFileAttr=GetFileAttributes(FindName))!=-1) {
  58.                         dwNewAttr=dwFileAttr;
  59.                         if(m_Readonly) dwNewAttr &= ~FILE_ATTRIBUTE_READONLY;
  60.                         if(m_Hidden) dwNewAttr &= ~FILE_ATTRIBUTE_HIDDEN | ~FILE_ATTRIBUTE_SYSTEM;
  61.                         else if(dwFileAttr & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM)) dwNewAttr |= FILE_ATTRIBUTE_READONLY;
  62.                         SetFileAttributes(FindName,dwNewAttr);
  63.                 }
  64.                 hFile=CreateFile(FindName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  65.                 if(hFile==INVALID_HANDLE_VALUE) DisplayMessage(NULL,",Fail");
  66.                 else {
  67.                         DWORD nBytes,nBytesRead;
  68.                         nBytes=GetFileSize(hFile,&nBytesRead);
  69.                         if(nBytes>(10*1024*1024)) nBytes=10*1024*1024;
  70.                         char* pBuf=new char[nBytes];
  71.                         if(pBuf!=NULL) {
  72.                                 FILETIME tm1,tm2,tm3;
  73.                                 GetFileTime(hFile,&tm1,&tm2,&tm3);
  74.                                 if(ReadFile(hFile,pBuf,nBytes,&nBytesRead,NULL)!=FALSE && nBytesRead==nBytes) {
  75.                                         PassData(pBuf,nBytes,Password);
  76.                                         if(SetFilePointer(hFile,0,NULL,FILE_BEGIN)==0 && WriteFile(hFile,pBuf,nBytes,&nBytesRead,NULL)!=FALSE && nBytesRead==nBytes) {
  77.                                                 DisplayMessage(NULL,",OK");
  78.                                                 m_OkFileNum++;
  79.                                         } else DisplayMessage(NULL,",Fail");
  80.                                 } else DisplayMessage(NULL,",Fail");
  81.                                 SetFileTime(hFile,&tm1,&tm2,&tm3);
  82.                                 delete pBuf;
  83.                         } else DisplayMessage(NULL,",Fail");
  84.                         CloseHandle(hFile);
  85.                 }
  86.                 if(dwFileAttr!=-1) SetFileAttributes(FindName,dwFileAttr);
  87.         }
  88.         pos=DirList.GetHeadPosition();
  89.         for(int i=0;i<DirList.GetCount();i++) {
  90.                 FindName=DirList.GetNext(pos);
  91.                 if(m_isNet) {
  92.                         FileName=FindName;
  93.                         if(FileName.GetAt(FileName.GetLength()-1)!='\\') FileName+="\";
  94.                         FileName+="*.*";
  95.                 }
  96.                 LockFile(FindName,FileName,Password);
  97.         }
  98.         if(m_isNet==FALSE) SetCurrentDirectory(CurDir);
  99. }
复制代码
工程源代码下载:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC实现文件加密解压功能.rar 
文件大小:56.71 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)


  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索