⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encrypt.h

📁 一个实现数据加密解密的例子。 从它可以看出自制加密解密的过程。
💻 H
字号:
#ifndef __ENCRYPT_1978_12_13
#define __ENCRYPT_1978_12_13

/*Example:::::::::::::::::::::::::::::
#include "stdlib.h"

#include "Encrypt.h"

#define L 2833
int main(int argc, char* argv[])
{
    unsigned char buf[L];
    unsigned char buf2[L];
    int i;
    for (i=0;i<L;i++){
        buf2[i]=buf[i]=rand();
    }
    printf("Original Data:\n");
    for (i=0;i<L;i++){
        printf("%d ",buf[i]);
    }
    printf("\nEncrypted data:\n");
    Encrypt(buf,L);
    for (i=0;i<L;i++){
        printf("%d ",buf[i]);
    }
    printf("\nDeEncrypted data:\n");
    DeEncrypt(buf,L);
    for (i=0;i<L;i++){
        printf("%d ",buf[i]);
    }
    printf("\nComparing...\n");
    for (i=0;i<L;i++){
        if (buf[i]!=buf2[i])
            printf("Find a difference i=%d\n",i);
    }
    printf("\nOK\n");

	return 0;
}

*/

inline void Encrypt(void* Buffer, int nBufferSize)
{//encrypted size will not be increated. The length is the same with the original one
    //structure of encrypted data
    //original data, d0 d1 d2 d3...
    //encrypted data: 
    //step 1: d(i) = d(i) ^ (nBufferSize-i)
    //step 2: d(i)=(d(i-1) + d(i-2)) ^ d(i),  i=2,3...
    //the program is not optimized
    unsigned char* d;
    d = (unsigned char*)Buffer;
    if (d==NULL) return;
    int i;
    int j=nBufferSize;
    for (i=0;i<nBufferSize;i++){
        if (i>=2) break;
        d[i]^=(unsigned char)(j--);
    }
    unsigned char* p;
    for (i=2;i<nBufferSize;i++){
        //printf("j=%d ",j);
        p=d+i;
        *p^=(unsigned char)(j--);
        //printf("s=%d ",(unsigned char)(d[i-1]+d[i-2]));
        *p^=(unsigned char)(d[i-1]+d[i-2]);
    }
    return;

}

inline void DeEncrypt(void* Buffer, int nBufferSize)
{
    unsigned char* d;
    d=(unsigned char*)Buffer;
    if (d==NULL) return;
    int i;
    int j;
    unsigned char dp,dpp,c;
    j=nBufferSize;
    for (i=0;i<nBufferSize;i++){
        if (i>=2) break;
        if (i==0) dpp=d[0];
        if (i==1) dp =d[1];
        d[i]^=(unsigned char)(j--);
    }
    j=nBufferSize-2;
    unsigned char* p;
   for (i=2;i<nBufferSize;i++){
                //printf("s=%d ",(unsigned char)(d[i-1]+d[i-2]));
       p=d+i;
        c=*p;
        *p^=(unsigned char)(dpp+dp);
        dpp=dp;
        dp=c;
                //printf("j=%d ",j);
*p^=(unsigned char)(j--);
    }
    return;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -