#pragma once #include using namespace std; class Base64 { public: static string EncodeF2S(CFile *pFile); static string Encode(const char *pBuffer, const ULONGLONG &length); static string Encode(const string &plaintext); static string Decode(const string &ciphertext); static ULONGLONG Decode(const string &ciphertext, char *&pBuffer); static ULONGLONG DecodeS2F(const string &ciphertext, CFile *pFile); public: /*注意: plaintext 会在内部转成 utf-8 格式进行base64编码 ciphertext 实际上是ANSII编码,会在内部转为ANSII码 */ static wstring Encode(const wstring &plaintext); static wstring Decode(const wstring &ciphertext); static wstring EncodeF2W(CFile *pFile); static ULONGLONG DecodeW2F(const wstring &ciphertext, CFile *pFile); static std::string unicode2Ansii(LPCTSTR psz, const DWORD &codePage); static std::wstring ansii2Unicode(LPCSTR psz, const DWORD &codePage); };