C语言实现无规律数据加密,解密功能

  

在网络传输重要信息或存储重要文件信息时,大部分会对数据加密,保证数据的安全性。互联网上流行的可逆加密方式对数据的安全性没有保证,便自己写了一套安全性极高加密,解密方法。

  

<强>方法的实现方式及特点:

  

1。采用指定单个字节加密转换(转换形式为ascll码表中0 - 128的形式,由1个字节拆分为三个字节、下面说明拆分方式),

  

2。采用数组中随机数据减指定加密字节(比如当前数据ascll码为121,当前数组中的数据为222年,结果为222 - 121=101,当然这个只是参考实例);

  

3。采用随机指定数组方式(如果需要用到无规律加密方式,可以通过随机指定数组方式进行加密),

  

4。指定很大的数据加密格式(比如使用1 - 2048字节中任意长度为一次的加密比例,大量数据分为多次加密),

  

5。多次加密数据时,第一次加密数据生成数据头与加密信息,之后只生成加密信息(数据头包含使用的加密数组(比如数组1,数组2,等…,)和加密字节长度,解析数据时将会根据数据头获取到这些信息);

  

6。加密字节为跳序形式(比如指定加密1,3,5字节或者指定为别的字节调序形式,只需简单改些代码就能实现);

  

指定一个字节加密后拆分为三个字节表示为:

  

①第一个字节为随机数组中的随机数据(比如数组有8个数据,第一个字节范围鹿作为标记,用来解密使用),
  ②第二个字节为加密后的数据拆分的一部分(小于128年用来对上ascll码表),
  ③第三个字节为采用的拆分格式(解密使用)。

  

下面贴上加密使用的数组:

     //数组中的任意数据都可以修改为1 - 255之间,末尾数据为0防止数组越界   无符号字符Data1[]={0} 255210208179168199202189年;   无符号字符Data2[]={0} 166207205196191190163180年;   无符号字符Data3[]={0} 155197186172228226219239年;   无符号字符Data4[]={0} 188229192254252212230217年;   unsigned char[]={0} 229206212224253211181207年;Data5      

目前代码中使用的是这5个数组,需要更大的随机性可以通过简单修改代码,写入更多的数,组数组中的数据在1 - 255(不建议写0,字符串中0为结尾)。

  

数据头定义格式:

  
  

,数据头1 - 3字节为“LKY”用来校验加密后的数据,如果数据中不存在,将不处理数据;
  ,数据头4 - 128字节为校验信息段,如果校验不正确,将不处理数据;
  ,数据头129 - 133字节为使用的指定数组进行加密(目前最大可以指定5个数组,同时使用5个数组进行对指定直接加密处理,修改代码可以增加更多的数组),
  ,数据头134 - 256字节为补数据;
  ,数据头257 - 260字节为指定的加密长度(加密长度为1 - 2048);
  ,数据头261 - 512字节为补数据;
  ,数据头的总长度为512个字节。

     

下面贴上. h文件(其中包括任意格式文件的加密,解密函数):

        # include & lt; vector>      struct FileData   {   装运箱文件名;   _this的值;   bool bCover;   };//数据加密解密类   类DataOperation   {   公众:   DataOperation ();   虚拟~ DataOperation ();/* * * * * * * * * * * * * * * * * * * * * * * * * * * * *加密部分* * * * * * * * * * * * * * * * * * * * * * * * * * *///设置加密数据(传入1表示使用无符号字符Data1[]={0} 255210208179168199202189193年数组加密)传入类型1 - 5,//如果传入数据超过5次,不再记录   bool SetEncryptionData (int nCount);//设备每一次加密的数据长度值为0 - 2048,默认使用2048   bool SetEncryptionLen (int nLen);//加密数据函数//返回加密完成的函数//如果传入的数据超过设置每一次加密的数据长度,将会采用设置的数据长度//第一次调用会生成512字节数据头与加密后的数据一起返回(比如需要加密3048个字节数据,第一次调用函数返回数据头和2048加密后的数据,第二次调用返回剩下1000个字节加密后的数据)   char *已(char * SrcData, int,nDataLen);//加密文件//参数一文件完整路径加名称//参数二真正为覆盖文件假为创建文件名加_Temp的新文件   bool EncryptionFile(装运箱文件名,bool bCover);/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *//* * * * * * * * * * * * * * * * * *解密部分* * * * * * * * * * * * * * * * * * * * * * * * * * * * *///解析数据头信息,返回每一次解密需要传入的数据长度(使用加密后的数据前512字节为数据头信息传入函数获取到加密数据以及加密的数据长度等)   int DecryptionHead (char * SrcData);//解密数据(传入加密后的数据以及数据长度,不要带数据头信息)//比如解密3048字节长度数据,去掉数据512个字节数据(数据头信息),从513字节开始为需要解析的数据//nDataLen为解析数据头返回的每次需要传入的数据长度   char * DecryptionData (const char * SrcData, int,nDataLen);//解密文件   bool DecryptionFile(装运箱文件名,bool bCover);/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */私人://加密数据计算函数   char * EncryptionData_ (char * SrcData, int,nDataLen, char * HeadData=https://www.yisu.com/zixun/0);//指定字节进行加密运算   unsigned char * Encryption_Operation (std::向量

C语言实现无规律数据加密,解密功能