crypt.hpp
来自「由7-zip提供的压缩、解压缩程序」· HPP 代码 · 共 61 行
HPP
61 行
#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: 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 + =
减小字号Ctrl + -
显示快捷键?