📄 crypt.hpp
字号:
#ifndef _RAR_CRYPT_#define _RAR_CRYPT_enum { OLD_DECODE=0,OLD_ENCODE=1,NEW_CRYPT=2 };struct CryptKeyCacheItem{#ifndef _SFX_RTL_ CryptKeyCacheItem() { *Password=0; } ~CryptKeyCacheItem() { memset(AESKey,0,sizeof(AESKey)); memset(AESInit,0,sizeof(AESInit)); memset(Password,0,sizeof(Password)); }#endif byte AESKey[16],AESInit[16]; char Password[MAXPASSWORD]; bool SaltPresent; byte Salt[SALT_SIZE];};class CryptData{ private: void Encode13(byte *Data,uint Count); void Decode13(byte *Data,uint Count); void Crypt15(byte *Data,uint Count); void UpdKeys(byte *Buf); void Swap(byte *Ch1,byte *Ch2); void SetOldKeys(char *Password); Rijndael rin; byte SubstTable[256]; uint Key[4]; ushort OldKey[4]; byte PN1,PN2,PN3; byte AESKey[16],AESInit[16]; static CryptKeyCacheItem Cache[4]; static int CachePos; public: CryptData(); void SetCryptKeys(char *Password,byte *Salt,bool Encrypt,bool OldOnly=false); void SetAV15Encryption(); void SetCmt13Encryption(); void EncryptBlock20(byte *Buf); void DecryptBlock20(byte *Buf); void EncryptBlock(byte *Buf,int Size); void DecryptBlock(byte *Buf,int Size); void Crypt(byte *Data,uint Count,int Method); static void SetSalt(byte *Salt,int SaltSize);};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -