📄 qqcrypt.h
字号:
// QQCrypt.h: interface for the CQQCrypt class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_QQCRYPT_H__B6BFB18D_33A6_4FD2_AF2F_7885B04A8749__INCLUDED_)
#define AFX_QQCRYPT_H__B6BFB18D_33A6_4FD2_AF2F_7885B04A8749__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CQQCrypt
{
public:
int QQ_Decrypt(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, BYTE *&ArrayOut);
int QQ_Decrypt(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, DWORD offset, BYTE *&ArrayOut);
int QQ_Encrypt(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, BYTE * &ArrayOut);
int QQ_Encrypt(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, DWORD offset, BYTE * &ArrayOut);
BOOL Decrypt8Bytes(BYTE arrayIn[], int in_len);
BOOL Decrypt8Bytes(BYTE arrayIn[], int in_len, DWORD offset);
void Encrypt8Bytes();
void Encipher(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, BYTE arrayOut[8]);
void Encipher(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, DWORD offset, BYTE arrayOut[8]);
void Decipher(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, BYTE arrayOut[8]);
void Decipher(BYTE arrayIn[], int in_len, BYTE arrayKey[], int key_len, DWORD offset, BYTE arrayOut[8]);
DWORD Rand();
DWORD getUnsignedInt(BYTE arrayIn[], int offset,int len);
DWORD CopyArray(DWORD Out, BYTE arr[], int arr_len, int arr_index);
void CopyArray(BYTE arr[], int arr_len, int arr_index, DWORD input);
CQQCrypt();
virtual ~CQQCrypt();
private:
BYTE Plain[8];
BYTE prePlain[8];
BYTE *Out; //输出的密文或者明文
DWORD Crypt;
DWORD preCrypt; //当前加密的密文位置和上一次加密的密文块位置,他们相差8
int Pos; //当前处理的加密解密块的位置
DWORD padding; //填充数
BYTE Key[16]; //密钥
BOOL Header; //用于加密时,表示当前是否是第一个8字节块,因为加密算法
//是反馈的,但是最开始的8个字节没有反馈可用,所有需要标
//明这种情况
int contextStart;
};
#endif // !defined(AFX_QQCRYPT_H__B6BFB18D_33A6_4FD2_AF2F_7885B04A8749__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -