?? encrypt.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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -