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

📄 newcrypt.cpp

📁 l2研究
💻 CPP
字号:
#include <windows.h>
#include "BlowfishEngine.h"
#include "NewCrypt.h"

CNewCrypt::CNewCrypt(char keybytes[], int keylen)
{
    _crypt = new CBlowFishEngine();
	_crypt->init(true, keybytes, keylen);
    _decrypt = new CBlowFishEngine();
	_decrypt->init(false, keybytes, keylen);
}

CNewCrypt::~CNewCrypt(void)
{
}

bool CNewCrypt::checksum(char raw[], int rawlength)
{
    long chksum = 0L;
    int count = rawlength - 8;
    int i = 0;
    long ecx;
    for(i = 0; i < count; i += 4)
    {
        ecx = raw[i] & 0xff;
        ecx |= raw[i + 1] << 8 & 0xff00;
        ecx |= raw[i + 2] << 16 & 0xff0000;
        ecx |= raw[i + 3] << 24 & 0xff000000;
        chksum ^= ecx;
    }

    ecx = raw[i] & 0xff;
    ecx |= raw[i + 1] << 8 & 0xff00;
    ecx |= raw[i + 2] << 16 & 0xff0000;
    ecx |= raw[i + 3] << 24 & 0xff000000;
    raw[i] = (char)(int)(chksum & 255L);
    raw[i + 1] = (char)(int)(chksum >> 8 & 255L);
    raw[i + 2] = (char)(int)(chksum >> 16 & 255L);
    raw[i + 3] = (char)(int)(chksum >> 24 & 255L);
    return ecx == chksum;
}

char* CNewCrypt::decrypt(char raw[], int rawlength)
{
    char* result = new char[rawlength];
    int count = rawlength / 8;
    for(int i = 0; i < count; i++)
        _decrypt->processBlock(raw, i * 8, result, i * 8);

    return result;
}

char* CNewCrypt::crypt(char raw[], int rawlength)
{
    int count = rawlength / 8;
    char* result = new char[rawlength];
    for(int i = 0; i < count; i++)
        _crypt->processBlock(raw, i * 8, result, i * 8);

    return result;
}

⌨️ 快捷键说明

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