如何使用C语言编写一个文件夹加密器

有没有高手肯耐心地讲一讲如何使用C语言编写文件夹加密器... 有没有高手肯耐心地讲一讲如何使用C语言编写文件夹加密器 展开
 我来答
tattackor
2015-06-11 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部

1.文件夹加密是操作系统才能实现的功能,C语言处理不了,除非调用系统的命令。C语言可以直接加密文件本身。

2.加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。例如对称算法亦或加密。

3.什么是异或算法
  异或的特点是原始值经过两次异或某一个数后会变成原来的值,所以有时利用这个特性来进行加密,加密端把数据与一个密钥进行异或操作,生成密文。接收方收到密文后利用加密方提供的密钥进行再次异或操作就能得到明文。

4.例程:

    /*以DWORD为单位对文件进行加密,将每个DWORD与0xfcba0000(密钥)做异或,写入另一个文件*/
    #include <stdio.h>
    #include <stdlib.h>
    #define DWORD unsigned long
    #define BYTE unsigned char 
    #define false 0
    #define true 1
    int main(int argc, char *argv[])
    {
      FILE *hSource;
      FILE *hDestination;
      
      DWORD dwKey=0xfcba0000;
      char* pbBuffer;
      DWORD dwBufferLen=sizeof(DWORD);
      DWORD dwCount;
      DWORD dwData;
      if(argv[1]==0||argv[2]==0)
      {
        printf("missing argument!\n");
        return false;
      }
      char* szSource=argv[1];
      char* szDestination=argv[2];
     
      hSource = fopen(szSource,"rb");// 打开源文件.
      hDestination = fopen(szDestination,"wb");    //打开目标文件
      if (hSource==NULL) {printf("open Source File error !"); return false ;}
      if (hDestination==NULL){ printf("open Destination File error !");  return false ;}
      
      //分配缓冲区
      pbBuffer=(char* )malloc(dwBufferLen);
      
      do {
        // 从源文件中读出dwBlockLen个字节
        dwCount = fread(pbBuffer, 1, dwBufferLen, hSource);
        //加密数据
        dwData = *(DWORD*)pbBuffer;  //char* TO dword
        dwData^=dwKey;        //xor operation
        pbBuffer = (char *) &dwData;
        // 将加密过的数据写入目标文件
        fwrite(pbBuffer, 1, dwCount, hDestination);
      } while(!feof(hSource));
     
        //关闭文件、释放内存
         fclose(hSource);
         fclose(hDestination);
      
      printf("%s is encrypted to %s\n",szSource,szDestination);
      return 0;
    }
百度网友4aa0cbadf
2011-05-05 · TA获得超过299个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:358万
展开全部
目前文件夹加密器如果你发现加密速度特别快的,那都不是加密,就是把你文件给藏起来了,你找不到而已。比如放到回收站,再有就是利用windows命名规则漏洞的,比较老套了。 从加密角度来说,比较麻烦而且繁琐还不一定能完成这个难题,但是可以换一个角度,可以伪装一下嘛,伪装成控制面板、打印机什么的。
追问
请问高手如何伪装
追答
在你要伪装的文件夹下建立个ini文件,内容是:
[.ShellClassInfo]
CLSID=

等号后面可以跟几个值,比如伪装成我的电脑,后面就跟{20D04FE0-3AEA-1069-A2D8-08002B30309D}
伪装成打印机,值就是{D6277990-4C6A-11CF-8D87-00AA0060F5BF}
伪装成网上邻居,值就是{208D2C60-3AEA-1069-A2D7-08002B30309D}

还有很多啦,LZ自己摸索一下吧。伪装以后,如果有人进这个文件夹,就自动跳到伪装后的那里了,比如直接跳到了我的电脑、打印机或者网上邻居。想还原也简单,把这个ini文件删掉就OK了。要写程序删哦。

要更安全,就把ini文件 attrib -s -h 设置成系统文件并隐藏吧。只要你的文件夹路径够风骚,配合合理的伪装,蒙住绝大部分人不成问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式