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

发布网友 发布时间:2022-04-22 04:39

我来回答

2个回答

热心网友 时间:2024-02-03 16:52

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;
    }

热心网友 时间:2024-02-03 16:53

目前文件夹加密器如果你发现加密速度特别快的,那都不是加密,就是把你文件给藏起来了,你找不到而已。比如放到回收站,再有就是利用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 设置成系统文件并隐藏吧。只要你的文件夹路径够*,配合合理的伪装,蒙住绝大部分人不成问题。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com