?? 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 + -