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

📄 zteacryptor.cpp

📁 这是一个加解密程序
💻 CPP
字号:
/*  ZTeaCryptor.cpp

    实现Tea加密算法类 CZTeaCryptor

    张忠杰  2003-12-04
*/

#include "stdafx.h"

#include "ZTeaCryptor.h"


//定义常数
#define TEA_ROUND   32
#define TEA_DELTA   0x9E3779B9

//---------------------------------------------------------------------------

CZTeaCryptor::CZTeaCryptor(const void *Key)
{
    SetKey(Key);
}

CZTeaCryptor::~CZTeaCryptor()
{
}

/*  设置密钥(密钥的长度128Bit)
    Key     密钥    16字节(128比特)
*/
void CZTeaCryptor::SetKey(const void *Key)
{
    if (Key!=NULL) {
        memcpy(_Key,Key,16);
    }else{
        memset(_Key,0,16);
    }
}

//读取密钥(密钥的长度128Bit)
void CZTeaCryptor::GetKey(void *Key)
{
	memcpy(Key,_Key,16);
}

/*  使用Tea算法加密
    Src     明文    8字节
    Dst     密文    8字节
*/
void CZTeaCryptor::Encrypt(void *Dst,const void *Src)
{
    int  i;
	unsigned __int32 a,b,c,d,Sum;
    unsigned __int32 x,y;
	unsigned __int32 *pKey=(unsigned __int32 *)_Key;
    unsigned __int32 *pSrc=(unsigned __int32 *)Src;
    unsigned __int32 *pDst=(unsigned __int32 *)Dst;

    a=pKey[0]; b=pKey[1]; c=pKey[2]; d=pKey[3];
    x=pSrc[0]; y=pSrc[1];
 
    Sum=0;
    for (i=0;i<TEA_ROUND;i++) {
		Sum += TEA_DELTA;
		x += (y<<4)+(a^y)+(Sum^(y>>5))+b;
		y += (x<<4)+(c^x)+(Sum^(x>>5))+d;
    }
    pDst[0]=x; pDst[1]=y;
}

/*  使用Tea算法解密
    Src     密文    8字节    
    Dst     明文    8字节
*/
void CZTeaCryptor::Decrypt(void *Dst,const void *Src)
{
    int  i;
	unsigned __int32 a,b,c,d,Sum;
    unsigned __int32 x,y;
	unsigned __int32 *pKey=(unsigned __int32 *)_Key;
    unsigned __int32 *pSrc=(unsigned __int32 *)Src;
    unsigned __int32 *pDst=(unsigned __int32 *)Dst;

    a=pKey[0]; b=pKey[1]; c=pKey[2]; d=pKey[3];
    x=pSrc[0]; y=pSrc[1];

    Sum = TEA_DELTA * TEA_ROUND ;
    for (i=0;i<TEA_ROUND;i++) {
  	    y -= (x<<4)+(c^x)+(Sum^(x>>5))+d;
	    x -= (y<<4)+(a^y)+(Sum^(y>>5))+b;
        Sum -= TEA_DELTA;
    }
    pDst[0]=x; pDst[1]=y;
}

//---------------------------------------------------------------------------

⌨️ 快捷键说明

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