VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 534|回复: 3

[原创] 分享一个简单的文件加解密算法

[复制链接]
01_avatar_middle
online_admins admin 发表于 2017-12-22 00:19:09 | 显示全部楼层 |阅读模式
早期使用的一个对文件进行加解密的算法,没什么技术含量,就是基本的按位取反,不过算是一道障眼法吧,对付小白还可以。大家需要就拿去用吧!

  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4. #include <fstream>
  5. #include <Windows.h>
  6. using namespace std;

  7. #define FILE_BUF_LEN 1024
  8. BOOL Encode(string infile, string outfile)
  9. {
  10.         HANDLE hFileSrc = CreateFile(infile.c_str(), GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);  
  11.     if (hFileSrc == INVALID_HANDLE_VALUE) return FALSE;

  12.         HANDLE hFileDst = CreateFile(outfile.c_str(), GENERIC_WRITE, FILE_SHARE_WRITE,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);  
  13.     if (hFileDst == INVALID_HANDLE_VALUE) return FALSE;

  14.         DWORD dwReaded = 0, dwWrited = 0;
  15.         char pFileBuffer[FILE_BUF_LEN] = {0};
  16.         BOOL bRet = FALSE;
  17.         do
  18.         {
  19.                 bRet = ReadFile(hFileSrc, pFileBuffer, FILE_BUF_LEN, &dwReaded, NULL);
  20.                 if (bRet && dwReaded > 0)
  21.                 {
  22.                         for(int idx = 0; idx < dwReaded; ++idx)
  23.                         {
  24.                                 pFileBuffer[idx] = ~pFileBuffer[idx]+66;
  25.                         }
  26.                         WriteFile(hFileDst, pFileBuffer, dwReaded, &dwWrited, NULL);
  27.                 }
  28.         } while(bRet && dwReaded > 0);

  29.         CloseHandle(hFileSrc);
  30.         CloseHandle(hFileDst);
  31.         return TRUE;
  32. }

  33. BOOL Decode(string infile, string outfile)
  34. {
  35.         HANDLE hFileSrc = CreateFile(infile.c_str(), GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);  
  36.     if (hFileSrc == INVALID_HANDLE_VALUE) return FALSE;
  37.        
  38.         HANDLE hFileDst = CreateFile(outfile.c_str(), GENERIC_WRITE, FILE_SHARE_WRITE,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);  
  39.     if (hFileDst == INVALID_HANDLE_VALUE) return FALSE;
  40.        

  41.         DWORD dwReaded = 0, dwWrited = 0;
  42.         char pFileBuffer[FILE_BUF_LEN] = {0};
  43.         BOOL bRet = FALSE;
  44.         do
  45.         {
  46.                 bRet = ReadFile(hFileSrc, pFileBuffer, FILE_BUF_LEN, &dwReaded, NULL);
  47.                 if (bRet && dwReaded > 0)
  48.                 {
  49.                         for(int idx = 0; idx < dwReaded; ++idx)
  50.                         {
  51.                                 pFileBuffer[idx] -= 66;
  52.                                 pFileBuffer[idx] = ~pFileBuffer[idx];
  53.                         }
  54.                         WriteFile(hFileDst, pFileBuffer, dwReaded, &dwWrited, NULL);
  55.                 }
  56.         } while(bRet && dwReaded > 0);
  57.        
  58.         CloseHandle(hFileSrc);
  59.         CloseHandle(hFileDst);
  60.         return TRUE;
  61. }

  62. int main(int argc, char* argv[])
  63. {
  64.         Encode( "E:\\dk\\2.bat", "E:\\dk\\1.bat" );
  65.         //Decode( "E:\\dk\\1.bat", "E:\\dk\\3.jpg" );
  66.         return 0;
  67. }
复制代码




上一篇:新人报道
下一篇:遗传算法模拟月球登陆器

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

75_avatar_middle
在线会员 besteast 发表于 2017-12-25 00:01:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

75_avatar_middle
在线会员 besteast 发表于 2017-12-25 00:02:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

59_avatar_middle
在线会员 fangting1989 发表于 2017-12-25 11:20:18 | 显示全部楼层
这个不错 对新人有帮助

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-15 04:47

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表