#ifndef __DAKUANG_BASE64_H__ #define __DAKUANG_BASE64_H__ #include namespace LenheartBase { class CBASE64 { public: // 生成RSA密钥结构 static void* __genKey(int nBits); // 生成密钥对,输出为PEM字符串 static bool genKeyStrings(std::string& strPrivateKeyPEMString, std::string& strPublicKeyPEMString); // 执行BASE64编码操作 static std::string encode(const std::string& str); // 执行BASE64解码操作 static std::string decode(const std::string& str); // 执行RSA私匙解密操作 static std::string RsaPriDecrypt(const std::string& cipher_text, const std::string& pri_key); // 执行RSA私匙加密操作 static std::string RsaPriEncrypt(const std::string& clear_text, const std::string& pri_key); // 使用PEM私钥字符串加密 static bool encryptByPrivatePEMString(const std::string& strIn, std::string& strOut, const std::string& strKeyPEMString); // 使用PEM公钥字符串加密 static bool encryptByPublicPEMString(const std::string& strIn, std::string& strOut, const std::string& strKeyPEMString); // 使用PEM公钥字符串解密 static bool decryptByPublicPEMString(const std::string& strIn, std::string& strOut, const std::string& strKeyPEMString); // 使用RSA执行加密或解密 static bool __encryptOrDecrypt(const std::string& strIn, std::string& strOut, const void* pRSA, const void* pFunc, bool bEncrypt); private: // 分组编码 static int __encode(unsigned char* pDest, const unsigned char* pSrc, size_t nSrcLen); // 分组解码 static int __decode(unsigned char* pDest, const unsigned char* pSrc, size_t nSrcLen); private: // 编解码转换表 static unsigned char s_encTable[]; static unsigned char s_decTable[]; }; } #endif