encryption.h
来自「管理项目进度工具的原代码」· C头文件 代码 · 共 70 行
H
70 行
// Encryption.h: interface for the CEncryption class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ENCRYPTION_H__06C80AE2_89BD_4040_A303_D3A71F44BFBD__INCLUDED_)
#define AFX_ENCRYPTION_H__06C80AE2_89BD_4040_A303_D3A71F44BFBD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "..\shared\iencryption.h"
#include "..\3rdParty\rijndael.h"
#include "..\3rdParty\NewRandom.h"
// The signature constants were chosen randomly
#define TD_TLSIG_1 0x139C5AFE
#define TD_TLSIG_2 0xBF3562DA
#define TD_STD_KEYENCROUNDS 100000
#pragma pack(1)
typedef struct _TD_TLHEADER // The database header
{
BYTE aHeaderHash[32]; // SHA-256 hash of the rest of the header
DWORD dwSignature1; // = TD_TLSIG_1
DWORD dwSignature2; // = TD_TLSIG_2
BYTE aMasterSeed[16]; // Seed that gets hashed with the userkey to form the final key
RD_UINT8 aEncryptionIV[16]; // IV used for content encryption
BYTE aContentsHash[32]; // SHA-256 hash of the database, used for integrity check
BYTE aMasterSeed2[32]; // Used for the dwKeyEncRounds AES transformations
DWORD dwKeyEncRounds;
} TD_TLHEADER, *PTD_TLHEADER;
#pragma pack()
class CEncryption : public IEncryption
{
public:
CEncryption();
virtual ~CEncryption();
void Release();
bool Encrypt(const unsigned char* szInput, int nLenInput, const char* szPassword,
unsigned char*& pOutput, int& nLenOutput);
bool Decrypt(const unsigned char* pInput, int nLenInput, const char* szPassword,
unsigned char*& pOutput, int& nLenOutput);
void FreeBuffer(unsigned char*& pBuffer);
private:
// Encrypt the master key a few times to make brute-force key-search harder
BOOL _TransformMasterKey(BYTE *pKeySeed);
BYTE m_pMasterKey[32]; // Master key used to encrypt the whole database
BYTE m_pTransformedMasterKey[32]; // Master key encrypted several times
DWORD m_dwKeyEncRounds;
CNewRandom m_random; // Pseudo-random number generator
};
#endif // !defined(AFX_ENCRYPTION_H__06C80AE2_89BD_4040_A303_D3A71F44BFBD__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?