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

📄 zcryptor.cpp

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

    实现“保密密钥加密算法”的抽象类 CZCryptor

    张忠杰  2003-12-04
*/


#include "stdafx.h"

#include "ZCryptor.h"

//---------------------------------------------------------------------------
//CZCryptor 类的成员函数

//长报文加密
void CZCryptor::LongEncrypt(void *Dst,const void *Src,int Len)
{
    int i,k;
    unsigned __int32  *pSrc = (unsigned __int32 *)Src ;
    unsigned __int32  *pDst = (unsigned __int32 *)Dst ;
    unsigned __int32  D0[2],D1[2],D2[2];

    k = Len / 8 ;

    D0[0] = 0;
    D0[1] = 0;
    for ( i=0 ; i < k ; i++ ) {
        D1[0] = *pSrc++ ^ D0[0] ;
        D1[1] = *pSrc++ ^ D0[1] ;
		Encrypt(D2,D1);
        *pDst++ = D0[0] = D2[0] ;
        *pDst++ = D0[1] = D2[1] ;
    }
}

//长报文解密
void CZCryptor::LongDecrypt(void *Dst,const void *Src,int Len)
{
    int i,k;
    unsigned __int32  *pSrc = (unsigned __int32 *)Src ;
    unsigned __int32  *pDst = (unsigned __int32 *)Dst ;
    unsigned __int32  D[2],D0[2],D1[2],D2[2];

    k = Len / 8 ;

    D0[0] = 0;
    D0[1] = 0;
    for ( i=0 ; i < k ; i++ ) {
        D1[0] = D[0] = *pSrc++ ;
        D1[1] = D[1] = *pSrc++ ;
		Decrypt(D2,D1);
        *pDst++ = D0[0] ^ D2[0] ;
        *pDst++ = D0[1] ^ D2[1] ;
        D0[0] = D[0] ;
        D0[1] = D[1] ;
    }
}

//长报文Hash
void CZCryptor::Hash(const void *Data,int Len,void *Result)
{
    int i,k;

	unsigned char  Key[16];
    unsigned char  b[4096],b1[16],b2[16];

    memset( Result , 0 , 16 );
    memset( b , 0 , 4096);
    memset( b1, 0 , 16);
    memset( b2, 0 , 16);

    if ((Len<8)||(Len>4096)) return;
    memcpy( b , Data , Len );
    k = Len & ~0xF ;
    if ( Len & 0xF ) k += 0x10 ;

	//保存密钥
	GetKey(Key);
    Encrypt(b1  ,b  );
    Encrypt(b1+8,b+8);

    for ( i=0x10 ; i<k ; i+=0x10 ) {
		SetKey(b1);
        Encrypt( b2,   b+i   ) ;
        Encrypt( b2+8, b+i+8 ) ;
        memcpy(b1,b2,16);
    }
    memcpy( Result , b1 , 16 );
	//恢复密钥
	SetKey(Key);
}

⌨️ 快捷键说明

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