⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.h

📁 Password Safe Password Safe is a password database utility. Users can keep their passwords securely
💻 H
字号:
// Util.h//-----------------------------------------------------------------------------#ifndef Util_h#define Util_h#include "MyString.h"#include "sha1.h"#include "PwsPlatform.h"#define SaltLength 20#define SaltSize 20#define StuffSize 10// this is for the undocumented 'command line file encryption'#define CIPHERTEXT_SUFFIX ".PSF"//Use non-standard dash (ANSI decimal 173) for separation#define SPLTCHR _T('\xAD')#define SPLTSTR _T("  \xAD  ")#define DEFUSERCHR _T('\xA0')//Version defines#define V10 0#define V15 1//Some extra typedefs -- I'm addicted to typedefstypedef char    int8;typedef short   int16;typedef int     int32;typedef __int64 int64;typedef unsigned char    uint8;typedef unsigned short   uint16;typedef unsigned int     uint32;typedef unsigned __int64 uint64;extern void trashMemory(SHA1_CTX& context);extern void trashMemory(unsigned char* buffer,                        long length,                        int numiter = 30);extern void trashMemory( LPTSTR buffer, long length, int numiter = 30 );extern void GenRandhash(const CMyString &passkey,                        const unsigned char* m_randstuff,                        unsigned char* m_randhash);extern unsigned char newrand();extern unsigned int  RangeRand(size_t len);extern char GetRandAlphaNumChar(void);extern char GetRandAlphaNumSymbolChar(void);CMyString   GetAlphaNumPassword(UINT pwlen);class BlowFish;extern BlowFish *MakeBlowFish(const unsigned char *pass, int passlen,			      const unsigned char *salt, int saltlen);// buffer is allocated by _readcbc, *** delete[] is responsibility of caller ***extern int _readcbc(FILE *fp, unsigned char* &buffer, unsigned int &buffer_len,		    unsigned char &type,		    const unsigned char *pass, int passlen,		    const unsigned char* salt, int saltlen,		    unsigned char* cbcbuffer);extern int _writecbc(FILE *fp, const unsigned char* buffer, int length,		     unsigned char type,		     const unsigned char *pass, int passlen,		     const unsigned char* salt, int saltlen,		     unsigned char* cbcbuffer);/* * Get an integer that is stored in little-endian format */inline int getInt32( const unsigned char *buf ){	ASSERT(sizeof(int) == 4);#if defined(LITTLE_ENDIAN)#if defined(_DEBUG)	if ( *(int*) buf != (buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24)) )	{		TRACE0( "Warning: LITTLE_ENDIAN defined but architecture is big endian\n" );	}#endif	return *(int *) buf;#elif defined(BIG_ENDIAN)#if defined(_DEBUG)	// Folowing code works for big or little endian architectures but we'll warn anyway	// if CPU is really little endian	if ( *(int*) buf == (buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24)) )	{		TRACE0( "Warning: BIG_ENDIAN defined but architecture is little endian\n" );	}#endif	return (buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24) );#else#error Is the target CPU big or little endian?#endif}/* * Store an integer that is stored in little-endian format */inline void putInt32( unsigned char *buf, const int val ){	ASSERT(sizeof(int) == 4);#if defined(LITTLE_ENDIAN)	*(int32 *) buf = val;#if defined(_DEBUG)	if ( *(int*) buf != (buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24)) )	{		TRACE0( "Warning: LITTLE_ENDIAN defined but architecture is big endian\n" );	}#endif#elif defined(BIG_ENDIAN)	buf[0] = val & 0xFF;	buf[1] = (val >> 8) & 0xFF;	buf[2] = (val >> 16) & 0xFF;	buf[3] = (val >> 24) & 0xFF;#if defined(_DEBUG)	// Above code works for big or little endian architectures but we'll warn anyway	// if CPU is really little endian	if ( *(int*) buf == (buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24)) )	{		TRACE0( "Warning: BIG_ENDIAN defined but architecture is little endian\n" );	}#endif#else#error Is the target CPU big or little endian?#endif}inline char * strCopy( char *target, const char *source ){	return strcpy( target, source );}#if defined(UNICODE)inline LPTSTR strCopy( LPTSTR target, LPCTSTR source ){	return wcscpy( target, source );}#endifinline int strLength( const char *str ){	return strlen( str );}#if defined(UNICODE)inline int strLength( const wchar_t *str ){	return wcslen( str );}#endifinline char * strFind( const char *str, const char *fstr ){	return strstr( str, fstr );}#if defined(UNICODE)inline wchar_t * strFind( const wchar_t *str, const wchar_t *fstr ){	return wcsstr( str, fstr );}#endif#if defined(WITH_LEGACY_CMDLINE)//void _encryptFile(CString filepath);//void _decryptFile(CString filepath);//void convertToLongFilePath(CString& filepath);void manageCmdLine(CString m_lpCmdLine);#endifextern long		fileLength( FILE *fp );#endif // Util_h//-----------------------------------------------------------------------------// Local variables:// mode: c++// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -