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

📄 zteancryptor.cpp

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

    实现扩展的Tea加密算法类 CZTeanCryptor

    张忠杰  2003-12-04
*/

#include "stdafx.h"

#include "ZTeanCryptor.h"


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

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

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

CZTeanCryptor::~CZTeanCryptor()
{
}

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

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

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

    x=pSrc[0]; y=pSrc[1];

    Sum=0;
    for (i=0;i<TEA_ROUND;i++) {
        x += ( ( y << 4 ) ^ (y >> 5 ) ) + ( y ^ Sum ) + pKey[ Sum & 3 ];
        Sum += TEA_DELTA;
		y += ( ( x << 4 ) ^ (x >> 5 ) ) + ( x ^ Sum ) + pKey[ ( Sum >> 11 ) & 3 ];
    }
    pDst[0]=x; pDst[1]=y;
}

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

    x=pSrc[0]; y=pSrc[1];

    Sum = TEA_DELTA * TEA_ROUND ;
    for (i=0;i<TEA_ROUND;i++) {
        y -= ( ( x << 4 ) ^ ( x >> 5 ) ) + ( x ^ Sum ) + pKey[ ( Sum >> 11 ) & 3 ];
        Sum -= TEA_DELTA;
        x -= ( ( y << 4 ) ^ ( y >> 5 ) ) + ( y ^ Sum ) + pKey[ Sum & 3 ];
    }
    pDst[0]=x; pDst[1]=y;
}

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

⌨️ 快捷键说明

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